From 89b9d155491fae63bcf40329e644ee7c4a06eef2 Mon Sep 17 00:00:00 2001 From: sunzheng Date: Tue, 24 Sep 2024 17:40:30 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=9B=BD=E5=86=85=E6=95=B4=E8=BD=A6?= =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E5=8F=8AVIN=E5=BA=93=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81;=E6=B3=95=E8=A7=84=E9=87=8A=E7=96=91?= =?UTF-8?q?=E5=BA=93=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vehicledomestic/common/Constant.java | 15 + ...ocessVehicleDomesticReleaseController.java | 57 +++ .../entity/ProcessVehicleDomesticRelease.java | 63 +++ .../ProcessVehicleDomesticReleaseMapper.java | 16 + .../ProcessVehicleDomesticReleaseMapper.xml | 5 + ...IProcessVehicleDomesticReleaseService.java | 23 ++ ...cessVehicleDomesticReleaseServiceImpl.java | 384 ++++++++++++++++++ .../vehicledomestic/vo/excel/BaseExcel.java | 42 ++ .../vo/excel/ElectricAndHybridExcel.java | 36 ++ .../vo/excel/FuelOilExcel.java | 60 +++ .../vo/excel/HybridPowerExcel.java | 90 ++++ .../vo/excel/OilAndHybridExcel.java | 26 ++ .../vo/excel/PureElectricExcel.java | 69 ++++ .../laws/businessSupport/common/Constant.java | 35 ++ ...sRegulationsQuestionLibraryController.java | 96 +++++ .../LawsVehicleDomesticLibraryController.java | 86 ++++ ...hicleDomesticLibrarySublistController.java | 19 + .../LawsRegulationsQuestionLibrary.java | 107 +++++ .../entity/LawsVehicleDomesticLibrary.java | 124 ++++++ .../LawsVehicleDomesticLibrarySublist.java | 140 +++++++ .../LawsRegulationsQuestionLibraryMapper.java | 21 + .../LawsVehicleDomesticLibraryMapper.java | 16 + ...wsVehicleDomesticLibrarySublistMapper.java | 16 + .../LawsRegulationsQuestionLibraryMapper.xml | 32 ++ .../xml/LawsVehicleDomesticLibraryMapper.xml | 5 + ...awsVehicleDomesticLibrarySublistMapper.xml | 5 + ...LawsRegulationsQuestionLibraryService.java | 47 +++ .../ILawsVehicleDomesticLibraryService.java | 28 ++ ...sVehicleDomesticLibrarySublistService.java | 16 + ...RegulationsQuestionLibraryServiceImpl.java | 112 +++++ ...LawsVehicleDomesticLibraryServiceImpl.java | 119 ++++++ ...icleDomesticLibrarySublistServiceImpl.java | 20 + .../club/mapper/xml/LawsClubPaymentMapper.xml | 2 +- 33 files changed, 1931 insertions(+), 1 deletion(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/common/Constant.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/controller/ProcessVehicleDomesticReleaseController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/entity/ProcessVehicleDomesticRelease.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/ProcessVehicleDomesticReleaseMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/xml/ProcessVehicleDomesticReleaseMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/IProcessVehicleDomesticReleaseService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/BaseExcel.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/ElectricAndHybridExcel.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/FuelOilExcel.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/HybridPowerExcel.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/OilAndHybridExcel.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/PureElectricExcel.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/common/Constant.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsRegulationsQuestionLibraryController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibrarySublistController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsRegulationsQuestionLibrary.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrarySublist.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsRegulationsQuestionLibraryMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibraryMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibrarySublistMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsRegulationsQuestionLibraryMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibraryMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibrarySublistMapper.xml create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsRegulationsQuestionLibraryService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibraryService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibrarySublistService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsRegulationsQuestionLibraryServiceImpl.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibrarySublistServiceImpl.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/common/Constant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/common/Constant.java new file mode 100644 index 00000000..81c665cb --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/common/Constant.java @@ -0,0 +1,15 @@ +package com.jero.modules.activiti.process.vehicledomestic.common; + +public interface Constant { + + String TAKE_EFFECT = "1"; + + String ABOLISH = "2"; + + String FUEL_OIL = "1"; + + String HYBRID_POWER = "2"; + + String PURE_ELECTRIC = "3"; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/controller/ProcessVehicleDomesticReleaseController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/controller/ProcessVehicleDomesticReleaseController.java new file mode 100644 index 00000000..1598376c --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/controller/ProcessVehicleDomesticReleaseController.java @@ -0,0 +1,57 @@ +package com.jero.modules.activiti.process.vehicledomestic.controller; + +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.modules.activiti.process.vehicledomestic.service.IProcessVehicleDomesticReleaseService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 国内整车型号和VIN前八位管控流程 前端控制器 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@RestController +@RequestMapping("/process/vehicle/domestic") +public class ProcessVehicleDomesticReleaseController { + + @Resource + private IProcessVehicleDomesticReleaseService processVehicleDomesticReleaseService; + + /** + * 根据能源类型导出模板 + */ + @AutoLog(value = "国内整车型号和VIN前八位管控流程-根据能源类型导出模板") + @ApiOperation(value="国内整车型号和VIN前八位管控流程-根据能源类型导出模板", notes="国内整车型号和VIN前八位管控流程-根据能源类型导出模板") + @GetMapping(value = "/exportTemplateByType") + // @RequiresPermissions("clubManagement:clubManagement:import") + public ModelAndView exportTemplateByType(HttpServletRequest request) { + return processVehicleDomesticReleaseService.exportTemplateByType(request); + } + + /** + * 导入 + * @param request + * @return + */ + @AutoLog(value = "国内整车型号和VIN前八位管控流程-导入") + @ApiOperation(value="国内整车型号和VIN前八位管控流程-导入", notes="国内整车型号和VIN前八位管控流程-导入") + @PostMapping(value = "/importExcel") +// @RequiresPermissions("clubManagement:clubManagement:import") + public Result excelimport(HttpServletRequest request) { + return processVehicleDomesticReleaseService.importExcel(request); + } + + + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/entity/ProcessVehicleDomesticRelease.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/entity/ProcessVehicleDomesticRelease.java new file mode 100644 index 00000000..2ef9c5c8 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/entity/ProcessVehicleDomesticRelease.java @@ -0,0 +1,63 @@ +package com.jero.modules.activiti.process.vehicledomestic.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 国内整车型号和VIN前八位管控流程 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("process_vehicle_domestic_release") +@ApiModel(value="ProcessVehicleDomesticRelease对象", description="国内整车型号和VIN前八位管控流程") +public class ProcessVehicleDomesticRelease implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "流程实例Id") + private String processInstanceId; + + @ApiModelProperty(value = "整车型号id") + private String vehicleId; + + @ApiModelProperty(value = "抄送人员") + private String copyUser; + + @ApiModelProperty(value = "0表示流程未完成,1表示流程已完成") + private Integer isFinish; + + @ApiModelProperty(value = "0表示未删除,1表示删除") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + private LocalDateTime updateTime; + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/ProcessVehicleDomesticReleaseMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/ProcessVehicleDomesticReleaseMapper.java new file mode 100644 index 00000000..b815eae7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/ProcessVehicleDomesticReleaseMapper.java @@ -0,0 +1,16 @@ +package com.jero.modules.activiti.process.vehicledomestic.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.process.vehicledomestic.entity.ProcessVehicleDomesticRelease; + +/** + *

+ * 国内整车型号和VIN前八位管控流程 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-23 + */ +public interface ProcessVehicleDomesticReleaseMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/xml/ProcessVehicleDomesticReleaseMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/xml/ProcessVehicleDomesticReleaseMapper.xml new file mode 100644 index 00000000..9613a8cf --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/mapper/xml/ProcessVehicleDomesticReleaseMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/IProcessVehicleDomesticReleaseService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/IProcessVehicleDomesticReleaseService.java new file mode 100644 index 00000000..c12e9865 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/IProcessVehicleDomesticReleaseService.java @@ -0,0 +1,23 @@ +package com.jero.modules.activiti.process.vehicledomestic.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.common.api.vo.Result; +import com.jero.modules.activiti.process.vehicledomestic.entity.ProcessVehicleDomesticRelease; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 国内整车型号和VIN前八位管控流程 服务类 + *

+ * + * @author sz + * @since 2024-09-23 + */ +public interface IProcessVehicleDomesticReleaseService extends IService { + + ModelAndView exportTemplateByType(HttpServletRequest request); + + Result importExcel(HttpServletRequest request); +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java new file mode 100644 index 00000000..1784feac --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java @@ -0,0 +1,384 @@ +package com.jero.modules.activiti.process.vehicledomestic.service.impl; + +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.util.ImportExcelUtil; +import com.jero.modules.activiti.process.vehicledomestic.common.Constant; +import com.jero.modules.activiti.process.vehicledomestic.entity.ProcessVehicleDomesticRelease; +import com.jero.modules.activiti.process.vehicledomestic.mapper.ProcessVehicleDomesticReleaseMapper; +import com.jero.modules.activiti.process.vehicledomestic.service.IProcessVehicleDomesticReleaseService; +import com.jero.modules.activiti.process.vehicledomestic.vo.excel.*; +import org.apache.commons.lang3.StringUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +/** + *

+ * 国内整车型号和VIN前八位管控流程 服务实现类 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Service +public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl implements IProcessVehicleDomesticReleaseService { + + + private static final String NEWLINE_CHARACTER = "
"; + private static final String ENERGY_TYPE = "energyType"; + + @Override + public ModelAndView exportTemplateByType(HttpServletRequest request) { + String energyType = request.getParameter(ENERGY_TYPE); + if (StringUtils.isBlank(energyType)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, ENERGY_TYPE); + } + // AutoPoi 导出Excel + ModelAndView modelAndView = new ModelAndView(new JeecgEntityExcelView()); + // 设置文件名 + modelAndView.addObject(JeroController.FILE_NAME, "国内整车型号及VIN前八位统计表.xls"); + List excelList; + // 根据 energyType 设置数据类型 + if (Constant.FUEL_OIL.equals(energyType)) { + excelList = new ArrayList<>(); + modelAndView.addObject(JeroController.CLASS, FuelOilExcel.class); + } else if (Constant.HYBRID_POWER.equals(energyType)) { + excelList = new ArrayList<>(); + modelAndView.addObject(JeroController.CLASS, HybridPowerExcel.class); + } else { + excelList = new ArrayList<>(); + modelAndView.addObject(JeroController.CLASS, PureElectricExcel.class); + } + // 设置导出参数 + ExportParams exportParams = new ExportParams(null, "国内"); + exportParams.setType(ExcelType.HSSF); + modelAndView.addObject(JeroController.PARAMS, exportParams); + // 将数据列表传递给 NormalExcelConstants.DATA_LIST + modelAndView.addObject(NormalExcelConstants.DATA_LIST, excelList); + return modelAndView; + } + + @Override + public Result importExcel(HttpServletRequest request) { + String energyType = request.getParameter(ENERGY_TYPE); + if (StringUtils.isBlank(energyType)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, ENERGY_TYPE); + } + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + List excelList = new ArrayList<>(); + for (Map.Entry entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue();// 获取上传文件对象 + // 校验表头 + excelHeadVerify(energyType, file); + try { + ImportParams params = new ImportParams(); + params.setNeedSave(true); + params.setHeadRows(1); + excelList = getExcelData(energyType, file, params); + if (CollectionUtils.isEmpty(excelList)) { + throw new JeroBootException("没有数据可导入"); + } + // 校验数据 + StringBuilder msg = validatorExcel(energyType, excelList); + if (StringUtils.isNotEmpty(msg.toString())) { + return Result.error(msg.toString()); + } + }catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败:"+e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.OK(excelList); + } + + private StringBuilder validatorExcel(String energyType, List excelList) { + StringBuilder msg; + if (Constant.FUEL_OIL.equals(energyType)) { + msg = validatorFuelOil(castList(excelList, FuelOilExcel.class)); + } else if (Constant.HYBRID_POWER.equals(energyType)) { + msg = validatorHybridPower(castList(excelList, HybridPowerExcel.class)); + } else { + msg = validatorPureElectric(castList(excelList, PureElectricExcel.class)); + } + return msg; + } + + private List castList(List list, Class clazz) { + return list.stream() + .map(clazz::cast) + .collect(Collectors.toList()); + } + + // 校验燃油类型的字段 + private StringBuilder validatorFuelOil(List excelList) { + StringBuilder msg = new StringBuilder(); + for (int i = 0; i < excelList.size(); i++) { + FuelOilExcel fuelOilExcel = excelList.get(i); + StringBuilder msgSub = new StringBuilder(); + // 校验通用字段 + BaseExcel baseExcel = new BaseExcel(); + BeanUtils.copyProperties(fuelOilExcel, baseExcel); + validateCommonFields(baseExcel, i, msgSub); // 不再赋值 msgSub + // 校验燃油类型的特有字段 + OilAndHybridExcel oilAndHybridExcel = new OilAndHybridExcel(); + BeanUtils.copyProperties(fuelOilExcel, oilAndHybridExcel); + validateOilAndHybridFields(oilAndHybridExcel, i , msgSub); // 不再赋值 msgSub + if (msgSub.length() > 0) { + msg.append(msgSub).append(NEWLINE_CHARACTER); + } + } + return msg; + } + + // 校验纯电动类型的字段 + private StringBuilder validatorPureElectric(List excelList) { + StringBuilder msg = new StringBuilder(); + for (int i = 0; i < excelList.size(); i++) { + PureElectricExcel pureElectricExcel = excelList.get(i); + StringBuilder msgSub = new StringBuilder(); + // 校验通用字段 + BaseExcel baseExcel = new BaseExcel(); + BeanUtils.copyProperties(pureElectricExcel, baseExcel); + validateCommonFields(baseExcel, i, msgSub); + // 校验纯电类型的特有字段 + ElectricAndHybridExcel electricAndHybridExcel = new ElectricAndHybridExcel(); + BeanUtils.copyProperties(pureElectricExcel, electricAndHybridExcel); + validateElectricAndHybridFields(electricAndHybridExcel, i , msgSub); + if (msgSub.length() > 0) { + msg.append(msgSub).append(NEWLINE_CHARACTER); + } + } + return msg; + } + + // 校验混合动力类型的字段 + private StringBuilder validatorHybridPower(List excelList) { + StringBuilder msg = new StringBuilder(); + for (int i = 0; i < excelList.size(); i++) { + HybridPowerExcel hybridPowerExcel = excelList.get(i); + StringBuilder msgSub = new StringBuilder(); + // 校验通用字段 + BaseExcel baseExcel = new BaseExcel(); + BeanUtils.copyProperties(hybridPowerExcel, baseExcel); + validateCommonFields(baseExcel, i, msgSub); + // 校验混合动力类型的特有字段 + OilAndHybridExcel oilAndHybridExcel = new OilAndHybridExcel(); + BeanUtils.copyProperties(hybridPowerExcel, oilAndHybridExcel); + validateOilAndHybridFields(oilAndHybridExcel, i , msgSub); + ElectricAndHybridExcel electricAndHybridExcel = new ElectricAndHybridExcel(); + BeanUtils.copyProperties(hybridPowerExcel, electricAndHybridExcel); + validateElectricAndHybridFields(electricAndHybridExcel, i , msgSub); + // 校验混合方式 + if (StringUtils.isBlank(hybridPowerExcel.getMixedModel())) { + msgSub.append(getErrorMsg(i, "混合方式不能为空;")); + } + if (msgSub.length() > 0) { + msg.append(msgSub).append(NEWLINE_CHARACTER); + } + } + return msg; + } + + // 通用字段校验 + private StringBuilder validateCommonFields(Object excelObject, int index, StringBuilder msgSub) { + // 车型代码(必填,下拉单选,来源BOM) + if (excelObject instanceof BaseExcel) { + BaseExcel baseModel = (BaseExcel) excelObject; + // 车型代码(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getVehicleTypeCode())) { + msgSub.append(getErrorMsg(index, "车型代码不能为空;")); + } + // 动力类型(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getPowerType())) { + msgSub.append(getErrorMsg(index, "动力类型不能为空;")); + } + // 车辆外廓尺寸(必填,手填,长度不超过50) + if (StringUtils.isBlank(baseModel.getCarOutSize())) { + msgSub.append(getErrorMsg(index, "车辆外廓尺寸不能为空;")); + } else if (baseModel.getCarOutSize().length() > 50) { + msgSub.append(getErrorMsg(index, "车辆外廓尺寸长度不能超过50字符;")); + } + // 前后标牌(必填,手填,长度不超过50) + if (StringUtils.isBlank(baseModel.getAroundSignage())) { + msgSub.append(getErrorMsg(index, "前后标牌不能为空;")); + } else if (baseModel.getAroundSignage().length() > 50) { + msgSub.append(getErrorMsg(index, "前后标牌长度不能超过50字符;")); + } + // 整备质量(教练车)(非必填,手填,数字格式,长度不超过50) + if (StringUtils.isNotBlank(baseModel.getVehicleQuality()) && baseModel.getVehicleQuality().length() > 50) { + msgSub.append(getErrorMsg(index, "整备质量长度不能超过50字符;")); + } + // 驱动型式(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getDrivingType())) { + msgSub.append(getErrorMsg(index, "驱动型式不能为空;")); + } + // 车身形式(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getBodyType())) { + msgSub.append(getErrorMsg(index, "车身形式不能为空;")); + } + // 燃料类型(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getFuelType())) { + msgSub.append(getErrorMsg(index, "燃料类型不能为空;")); + } + // 前排正面气囊(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getFrontFrontAirbag())) { + msgSub.append(getErrorMsg(index, "前排正面气囊不能为空;")); + } + // 前排座椅侧气囊(非必填,下拉单选,来源BOM) + if (StringUtils.isBlank(baseModel.getFrontSeatSideAirbags())) { + msgSub.append(getErrorMsg(index, "前排座椅侧气囊不能为空;")); + } + } + return msgSub; + } + + // 燃油和混合动力共有字段校验 + private StringBuilder validateOilAndHybridFields(Object excelObject, int index, StringBuilder msgSub) { + // 车型代码(必填,下拉单选,来源BOM) + if (excelObject instanceof OilAndHybridExcel) { + OilAndHybridExcel oilAndHybridExcel = (OilAndHybridExcel) excelObject; + // 发动机型号(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(oilAndHybridExcel.getEngineType())) { + msgSub.append(getErrorMsg(index, "发动机型号不能为空;")); + } + // 变速器型式(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(oilAndHybridExcel.getTransmissionType())) { + msgSub.append(getErrorMsg(index, "变速器型式不能为空;")); + } + // 变速器型号(必填,下拉多选,来源BOM) + if (StringUtils.isBlank(oilAndHybridExcel.getTransmissionModel())) { + msgSub.append(getErrorMsg(index, "变速器型号不能为空;")); + } + // 发动机排量(L)(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(oilAndHybridExcel.getEngineCapacity())) { + msgSub.append(getErrorMsg(index, "发动机排量不能为空;")); + } + // 排放水平(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(oilAndHybridExcel.getEmissionLevel())) { + msgSub.append(getErrorMsg(index, "排放水平不能为空;")); + } + // 油耗阶段(必填,下拉单选) + if (StringUtils.isBlank(oilAndHybridExcel.getFuelConsumptionStage())) { + msgSub.append(getErrorMsg(index, "油耗阶段不能为空;")); + } + } + return msgSub; + } + + // 纯电动和混合动力共有字段验证 + private StringBuilder validateElectricAndHybridFields(Object excelObject, int index, StringBuilder msgSub) { + // 车型代码(必填,下拉单选,来源BOM) + if (excelObject instanceof ElectricAndHybridExcel) { + ElectricAndHybridExcel electricAndHybridExcel = (ElectricAndHybridExcel) excelObject; + // 驱动电机型号(必填,下拉多选,来源BOM) + if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorModel())) { + msgSub.append(getErrorMsg(index, "驱动电机型号不能为空;")); + } + // 驱动电机峰值功率(必填,手填,长度不超过50) + if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorPeakPower())) { + msgSub.append(getErrorMsg(index, "驱动电机峰值功率不能为空;")); + } else if (electricAndHybridExcel.getDriveMotorPeakPower().length() > 50) { + msgSub.append(getErrorMsg(index, "驱动电机峰值功率长度不能超过50字符;")); + } + // 驱动电机额定功率(必填,手填,长度不超过50) + if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorRatedPower())) { + msgSub.append(getErrorMsg(index, "驱动电机额定功率不能为空;")); + } else if (electricAndHybridExcel.getDriveMotorRatedPower().length() > 50) { + msgSub.append(getErrorMsg(index, "驱动电机额定功率长度不能超过50字符;")); + } + // 驱动电机类型(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorType())) { + msgSub.append(getErrorMsg(index, "驱动电机类型不能为空;")); + } + // 动力电池型号(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(electricAndHybridExcel.getPowerBatteryModel())) { + msgSub.append(getErrorMsg(index, "动力电池型号不能为空;")); + } + // 电池类型(必填,下拉单选,来源BOM) + if (StringUtils.isBlank(electricAndHybridExcel.getBatteryType())) { + msgSub.append(getErrorMsg(index, "电池类型不能为空;")); + } + // 动力电池组标称电压(必填,手填,长度不超过50) + if (StringUtils.isBlank(electricAndHybridExcel.getPowerBatteryVoltage())) { + msgSub.append(getErrorMsg(index, "动力电池组标称电压不能为空;")); + } else if (electricAndHybridExcel.getPowerBatteryVoltage().length() > 50) { + msgSub.append(getErrorMsg(index, "动力电池组标称电压长度不能超过50字符;")); + } + // 动力电池组总成标称容量(必填,手填,长度不超过50) + if (StringUtils.isBlank(electricAndHybridExcel.getPowerBatteryVolume())) { + msgSub.append(getErrorMsg(index, "动力电池组总成标称容量不能为空;")); + } else if (electricAndHybridExcel.getPowerBatteryVolume().length() > 50) { + msgSub.append(getErrorMsg(index, "动力电池组总成标称容量长度不能超过50字符;")); + } + // 驱动电机的布置位置(必填,下拉多选,来源BOM) + if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorPlace())) { + msgSub.append(getErrorMsg(index, "驱动电机的布置位置不能为空;")); + } + } + return msgSub; + } + + // 解析excel数据 + private List getExcelData(String energyType, MultipartFile file, ImportParams params) throws Exception { + Class clazz; + if (Constant.FUEL_OIL.equals(energyType)) { + clazz = FuelOilExcel.class; + } else if (Constant.HYBRID_POWER.equals(energyType)) { + clazz = HybridPowerExcel.class; + } else { + clazz = PureElectricExcel.class; + } + return ExcelImportUtil.importExcel(file.getInputStream(), clazz, params); + } + + // 校验表头 + private void excelHeadVerify(String energyType, MultipartFile file) { + Class clazz; + if (Constant.FUEL_OIL.equals(energyType)) { + clazz = FuelOilExcel.class; + } else if (Constant.HYBRID_POWER.equals(energyType)) { + clazz = HybridPowerExcel.class; + } else { + clazz = PureElectricExcel.class; + } + try { + if (!(boolean) ImportExcelUtil.checkTemplateTitle(file, clazz, 0, 0)){ + throw new JeroBootException(ResultCommon.IMPORT_TEMPLATE_ERROR); + } + }catch (Exception e) { + e.printStackTrace(); + throw new JeroBootException(ResultCommon.IMPORT_TEMPLATE_ERROR); + } + } + + private String getErrorMsg(int rowIndex, String errorMsg) { + return "第" + (rowIndex + 4) + "行" + errorMsg; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/BaseExcel.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/BaseExcel.java new file mode 100644 index 00000000..963ce52a --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/BaseExcel.java @@ -0,0 +1,42 @@ +package com.jero.modules.activiti.process.vehicledomestic.vo.excel; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * 导出能源类型为传统燃油对应的excel模板 + */ +@Data +public class BaseExcel { + + @Excel(name = "车型代码", width = 20) + private String vehicleTypeCode; + + @Excel(name = "动力类型", width = 20) + private String powerType; + + @Excel(name = "车辆外廓尺寸(长*宽*高)", width = 20) + private String carOutSize; + + @Excel(name = "前后标牌", width = 20) + private String aroundSignage; + + @Excel(name = "整备质量(教练车)", width = 20) + private String vehicleQuality; + + @Excel(name = "驱动型式", width = 20) + private String drivingType; + + @Excel(name = "车身形式", width = 20) + private String bodyType; + + @Excel(name = "燃料类型", width = 20) + private String fuelType; + + @Excel(name = "前排正面气囊", width = 20) + private String frontFrontAirbag; + + @Excel(name = "前排座椅侧气囊", width = 20) + private String frontSeatSideAirbags; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/ElectricAndHybridExcel.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/ElectricAndHybridExcel.java new file mode 100644 index 00000000..83c91749 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/ElectricAndHybridExcel.java @@ -0,0 +1,36 @@ +package com.jero.modules.activiti.process.vehicledomestic.vo.excel; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +@Data +public class ElectricAndHybridExcel { + + @Excel(name = "驱动电机型号", width = 20) + private String driveMotorModel; + + @Excel(name = "驱动电机峰值功率(kw)", width = 20) + private String driveMotorPeakPower; + + @Excel(name = "驱动电机额定功率(kw)", width = 20) + private String driveMotorRatedPower; + + @Excel(name = "驱动电机类型", width = 20) + private String driveMotorType; + + @Excel(name = "动力电池型号", width = 20) + private String powerBatteryModel; + + @Excel(name = "电池类型", width = 20) + private String batteryType; + + @Excel(name = "动力电池组标称电压", width = 20) + private String powerBatteryVoltage; + + @Excel(name = "动力电池组总成标称容量", width = 20) + private String powerBatteryVolume; + + @Excel(name = "驱动电机的布置位置", width = 20) + private String driveMotorPlace; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/FuelOilExcel.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/FuelOilExcel.java new file mode 100644 index 00000000..2107f929 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/FuelOilExcel.java @@ -0,0 +1,60 @@ +package com.jero.modules.activiti.process.vehicledomestic.vo.excel; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * 导出能源类型为传统燃油对应的excel模板 + */ +@Data +public class FuelOilExcel { + + @Excel(name = "车型代码", width = 20) + private String vehicleTypeCode; + + @Excel(name = "动力类型", width = 20) + private String powerType; + + @Excel(name = "车辆外廓尺寸(长*宽*高)", width = 20) + private String carOutSize; + + @Excel(name = "前后标牌", width = 20) + private String aroundSignage; + + @Excel(name = "整备质量(教练车)", width = 20) + private String vehicleQuality; + + @Excel(name = "驱动型式", width = 20) + private String drivingType; + + @Excel(name = "车身形式", width = 20) + private String bodyType; + + @Excel(name = "燃料类型", width = 20) + private String fuelType; + + @Excel(name = "发动机型号", width = 20) + private String engineType; + + @Excel(name = "变速器型式", width = 20) + private String transmissionType; + + @Excel(name = "变速器型号", width = 20) + private String transmissionModel; + + @Excel(name = "发动机排量(L)", width = 20) + private String engineCapacity; + + @Excel(name = "排放水平", width = 20) + private String emissionLevel; + + @Excel(name = "油耗阶段", width = 20) + private String fuelConsumptionStage; + + @Excel(name = "前排正面气囊", width = 20) + private String frontFrontAirbag; + + @Excel(name = "前排座椅侧气囊", width = 20) + private String frontSeatSideAirbags; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/HybridPowerExcel.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/HybridPowerExcel.java new file mode 100644 index 00000000..07582512 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/HybridPowerExcel.java @@ -0,0 +1,90 @@ +package com.jero.modules.activiti.process.vehicledomestic.vo.excel; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * 导出能源类型为纯电动对应的excel模板 + */ +@Data +public class HybridPowerExcel { + + @Excel(name = "车型代码", width = 20) + private String vehicleTypeCode; + + @Excel(name = "动力类型", width = 20) + private String powerType; + + @Excel(name = "车辆外廓尺寸(长*宽*高)", width = 20) + private String carOutSize; + + @Excel(name = "前后标牌", width = 20) + private String aroundSignage; + + @Excel(name = "整备质量(教练车)", width = 20) + private String vehicleQuality; + + @Excel(name = "驱动型式", width = 20) + private String drivingType; + + @Excel(name = "车身形式", width = 20) + private String bodyType; + + @Excel(name = "燃料类型", width = 20) + private String fuelType; + + @Excel(name = "发动机型号", width = 20) + private String engineType; + + @Excel(name = "变速器型式", width = 20) + private String transmissionType; + + @Excel(name = "变速器型号", width = 20) + private String transmissionModel; + + @Excel(name = "发动机排量(L)", width = 20) + private String engineCapacity; + + @Excel(name = "驱动电机型号", width = 20) + private String driveMotorModel; + + @Excel(name = "驱动电机峰值功率(kw)", width = 20) + private String driveMotorPeakPower; + + @Excel(name = "驱动电机额定功率(kw)", width = 20) + private String driveMotorRatedPower; + + @Excel(name = "驱动电机类型", width = 20) + private String driveMotorType; + + @Excel(name = "动力电池型号", width = 20) + private String powerBatteryModel; + + @Excel(name = "电池类型", width = 20) + private String batteryType; + + @Excel(name = "混合方式", width = 20) + private String mixedModel; + + @Excel(name = "动力电池组标称电压", width = 20) + private String powerBatteryVoltage; + + @Excel(name = "动力电池组总成标称容量", width = 20) + private String powerBatteryVolume; + + @Excel(name = "驱动电机的布置位置", width = 20) + private String driveMotorPlace; + + @Excel(name = "排放水平", width = 20) + private String emissionLevel; + + @Excel(name = "油耗阶段", width = 20) + private String fuelConsumptionStage; + + @Excel(name = "前排正面气囊", width = 20) + private String frontFrontAirbag; + + @Excel(name = "前排座椅侧气囊", width = 20) + private String frontSeatSideAirbags; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/OilAndHybridExcel.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/OilAndHybridExcel.java new file mode 100644 index 00000000..daa46556 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/OilAndHybridExcel.java @@ -0,0 +1,26 @@ +package com.jero.modules.activiti.process.vehicledomestic.vo.excel; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +@Data +public class OilAndHybridExcel { + + @Excel(name = "发动机型号", width = 20) + private String engineType; + + @Excel(name = "变速器型式", width = 20) + private String transmissionType; + + @Excel(name = "变速器型号", width = 20) + private String transmissionModel; + + @Excel(name = "发动机排量(L)", width = 20) + private String engineCapacity; + + @Excel(name = "排放水平", width = 20) + private String emissionLevel; + + @Excel(name = "油耗阶段", width = 20) + private String fuelConsumptionStage; +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/PureElectricExcel.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/PureElectricExcel.java new file mode 100644 index 00000000..076c01e3 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/vo/excel/PureElectricExcel.java @@ -0,0 +1,69 @@ +package com.jero.modules.activiti.process.vehicledomestic.vo.excel; + +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * 导出能源类型为混合动力对应的excel模板 + */ +@Data +public class PureElectricExcel { + + @Excel(name = "车型代码",width=20) + private String vehicleTypeCode; + + @Excel(name = "动力类型",width=20) + private String powerType; + + @Excel(name = "车辆外廓尺寸(长*宽*高)",width=20) + private String carOutSize; + + @Excel(name = "前后标牌",width=20) + private String aroundSignage; + + @Excel(name = "整备质量(教练车)",width=20) + private String vehicleQuality; + + @Excel(name = "驱动型式",width=20) + private String drivingType; + + @Excel(name = "车身形式",width=20) + private String bodyType; + + @Excel(name = "燃料类型",width=20) + private String fuelType; + + @Excel(name = "驱动电机型号",width=20) + private String driveMotorModel; + + @Excel(name = "驱动电机峰值功率(kw)",width=20) + private String driveMotorPeakPower; + + @Excel(name = "驱动电机额定功率(kw)",width=20) + private String driveMotorRatedPower; + + @Excel(name = "驱动电机类型",width=20) + private String driveMotorType; + + @Excel(name = "动力电池型号",width=20) + private String powerBatteryModel; + + @Excel(name = "电池类型",width=20) + private String batteryType; + + @Excel(name = "动力电池组标称电压",width=20) + private String powerBatteryVoltage; + + @Excel(name = "动力电池组总成标称容量",width=20) + private String powerBatteryVolume; + + @Excel(name = "驱动电机的布置位置",width=20) + private String driveMotorPlace; + + @Excel(name = "前排正面气囊",width=20) + private String frontFrontAirbag; + + @Excel(name = "前排座椅侧气囊",width=20) + private String frontSeatSideAirbags; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/common/Constant.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/common/Constant.java new file mode 100644 index 00000000..b8e6a104 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/common/Constant.java @@ -0,0 +1,35 @@ +package com.jero.modules.laws.businessSupport.common; + +public interface Constant { + + /** + * 整车型号及vin前八位库-状态:现行 + */ + String TAKE_EFFECT = "1"; + + /** + * 整车型号及vin前八位库-状态:废弃 + */ + String ABOLISH = "2"; + + /** + * 法规释疑库-发布状态:未发布 + */ + String UN_PUBLISH = "0"; + + /** + * 法规释疑库-发布状态:已发布 + */ + String PUBLISH = "1"; + + /** + * 法规释疑库-不是管理员 + */ + String NOT_ADMIN = "0"; + + /** + * 法规释疑库-是管理员 + */ + String IS_ADMIN = "1"; + +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsRegulationsQuestionLibraryController.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsRegulationsQuestionLibraryController.java new file mode 100644 index 00000000..027e9150 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsRegulationsQuestionLibraryController.java @@ -0,0 +1,96 @@ +package com.jero.modules.laws.businessSupport.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +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.common.exception.JeroBootException; +import com.jero.modules.laws.businessSupport.common.Constant; +import com.jero.modules.laws.businessSupport.entity.LawsRegulationsQuestionLibrary; +import com.jero.modules.laws.businessSupport.service.ILawsRegulationsQuestionLibraryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.Date; +import java.util.Objects; + + +/** + *

+ * 法规释疑库表 前端控制器 + *

+ * + * @author sz + * @since 2024-09-20 + */ +@RestController +@RequestMapping("regulationsQuestion") +@Api(tags="法规释疑库表") +public class LawsRegulationsQuestionLibraryController { + + @Resource + private ILawsRegulationsQuestionLibraryService lawsRegulationsQuestionLibraryService; + + + @AutoLog(value = "法规释疑库-分页列表查询") + @ApiOperation(value = "法规释疑库-分页列表查询", notes = "法规释疑库-分页列表查询") + @GetMapping(value = "/page") + @RequiresPermissions("legalClarificationDatabase:search") + public Result> queryPageList(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + IPage pageList = lawsRegulationsQuestionLibraryService.queryPage(lawsRegulationsQuestionLibrary, pageNo, pageSize); + return Result.OK(pageList); + } + + @AutoLog(value = "法规释疑库-保存") + @ApiOperation(value = "法规释疑库-保存", notes = "法规释疑库-保存") + @PostMapping(value = "/save") + @RequiresPermissions("legalClarificationDatabaseFormPage:save") + public Result save(@RequestBody LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary) { + // 第一次保存,附上初值 + lawsRegulationsQuestionLibrary.setReleaseStatus(Constant.UN_PUBLISH); // 未发布 + lawsRegulationsQuestionLibraryService.add(lawsRegulationsQuestionLibrary); + return Result.OK(ResultCommon.OK); + } + + @AutoLog(value = "法规释疑库-发布") + @ApiOperation(value = "法规释疑库-发布", notes = "法规释疑库-发布") + @PostMapping(value = "/release") + @RequiresPermissions("legalClarificationDatabaseFormPage:release") + public Result release(@RequestBody LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary) { + // 不管第几次发布,发布时间都更新 + lawsRegulationsQuestionLibrary.setReleaseTime(new Date()); + lawsRegulationsQuestionLibrary.setReleaseStatus(Constant.PUBLISH); + lawsRegulationsQuestionLibraryService.add(lawsRegulationsQuestionLibrary); + return Result.OK(ResultCommon.OK); + } + + @AutoLog(value = "法规释疑库-通过id删除") + @ApiOperation(value = "法规释疑库-通过id删除", notes = "法规释疑库-通过id删除") + @PostMapping(value = "/delete") +// @RequiresPermissions("legalClarificationDatabase:delete") + public Result delete(@RequestBody @ApiParam(name = "id", value = "主键") JSONObject jsonObject) { + if (Objects.isNull(jsonObject) || StringUtils.isBlank(jsonObject.getString("id"))) { + throw new JeroBootException(ResultCommon.SELECT_DATA); + } + lawsRegulationsQuestionLibraryService.deleteById(jsonObject.getString("id")); + return Result.OK(ResultCommon.OK); + } + + @AutoLog(value = "法规释疑库-通过id查询") + @ApiOperation(value = "法规释疑库-通过id查询", notes = "法规释疑库-通过id查询") + @GetMapping(value = "/queryById") + @Translation + @RequiresPermissions("legalClarificationDatabase:view") + public Result queryById(@RequestParam(name = "id") @ApiParam("主键") String id) { + LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary = lawsRegulationsQuestionLibraryService.queryById(id); + return Result.OK(lawsRegulationsQuestionLibrary); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java new file mode 100644 index 00000000..863e82b9 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java @@ -0,0 +1,86 @@ +package com.jero.modules.laws.businessSupport.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibraryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 国内整车型号及VIN前八位管控库 前端控制器 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Api(tags="国内整车型号及VIN前八位管控库") +@RestController +@RequestMapping("/vehicle/domestic") +@Slf4j +public class LawsVehicleDomesticLibraryController { + + @Resource + private ILawsVehicleDomesticLibraryService lawsVehicleDomesticControlLibraryService; + + /** + * 分页列表查询 + * + * @return + */ + @AutoLog(value = "国内整车型号及VIN前八位管控库-分页列表查询") + @ApiOperation(value="国内整车型号及VIN前八位管控库-分页列表查询", notes="国内整车型号及VIN前八位管控库-分页列表查询") + @GetMapping(value = "/page") +// @RequiresPermissions("companyStandardStatistics:search") + public Result queryPageList(LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + IPage pageList= lawsVehicleDomesticControlLibraryService.queryPageList(lawsVehicleDomesticLibrary, pageNo, pageSize, req); + return Result.OK(pageList); + } + + /** + * 查看 + * + * @param jsonObject + * @return + */ + @AutoLog(value = "国内整车型号及VIN前八位管控库-查看") + @ApiOperation(value="国内整车型号及VIN前八位管控库-查看", notes="国内整车型号及VIN前八位管控库-查看") + @PostMapping(value = "/queryOne") +// @RequiresPermissions("companyStandardStatistics:edit") + public Result queryOne(@RequestBody JSONObject jsonObject) { + String id = jsonObject.getString("id"); + return lawsVehicleDomesticControlLibraryService.queryOne(id); + } + + /** + * 删除 + */ + @AutoLog(value = "国内整车型号及VIN前八位管控库-删除") + @ApiOperation(value="国内整车型号及VIN前八位管控库-删除", notes="国内整车型号及VIN前八位管控库-删除") + @PostMapping(value = "/delete") +// @RequiresPermissions("companyStandardStatistics:delete") + public Result delete(@RequestBody JSONObject jsonObject) { + return lawsVehicleDomesticControlLibraryService.delete(jsonObject); + } + + /** + * 作废 + */ + @AutoLog(value = "国内整车型号及VIN前八位管控库-作废") + @ApiOperation(value="国内整车型号及VIN前八位管控库-作废", notes="国内整车型号及VIN前八位管控库-作废") + @PostMapping(value = "/abolish") +// @RequiresPermissions("companyStandardStatistics:delete") + public Result abolish(@RequestBody JSONObject jsonObject) { + return lawsVehicleDomesticControlLibraryService.abolish(jsonObject); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibrarySublistController.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibrarySublistController.java new file mode 100644 index 00000000..753e26f5 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibrarySublistController.java @@ -0,0 +1,19 @@ +package com.jero.modules.laws.businessSupport.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 国内整车型号及VIN前八位管控库-子表 前端控制器 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@RestController +@RequestMapping("/laws-vehicle-domestic-library-sublist") +public class LawsVehicleDomesticLibrarySublistController { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsRegulationsQuestionLibrary.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsRegulationsQuestionLibrary.java new file mode 100644 index 00000000..4d7aa851 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsRegulationsQuestionLibrary.java @@ -0,0 +1,107 @@ +package com.jero.modules.laws.businessSupport.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

+ * 法规释疑库表 + *

+ * + * @author sz + * @since 2024-09-20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("laws_regulations_question_library") +@ApiModel(value="LawsRegulationsQuestionLibrary对象", description="法规释疑库表") +public class LawsRegulationsQuestionLibrary implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "问题提出专业模块") + @Dict(dicCode = "professional_module") + private String questionSpecializedModule; + + @ApiModelProperty(value = "标准编号") + private String standardNumber; + + @ApiModelProperty(value = "条款号") + private String regulationNumber; + + @ApiModelProperty(value = "问题描述") + private String problemDescription; + + @ApiModelProperty(value = "回复来源") + private String replySource; + + @ApiModelProperty(value = "回复") + private String replyContent; + + @ApiModelProperty(value = "发布状态(0-未发布、1-已发布)") + @Dict(dicCode = "dynamic_news_status") + private String releaseStatus; + + @ApiModelProperty(value = "发布时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date releaseTime; + + @ApiModelProperty(value = "编辑人") + private String writer; + + @ApiModelProperty(value = "0表示未删除,1表示删除") + @TableLogic(value = "0", delval = "1") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(value = "是否可以编辑和删除") + @TableField(exist = false) + private Boolean isEditAndRemove; + + @ApiModelProperty(value = "是否管理员") + @TableField(exist = false) + private String isAdmin; + + @ApiModelProperty(value = "发布日期开始日期") + @TableField(exist = false) + private String releaseStartTime; + + @ApiModelProperty(value = "发布日期结束日期") + @TableField(exist = false) + private String releaseEndTime; + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java new file mode 100644 index 00000000..8b39def7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java @@ -0,0 +1,124 @@ +package com.jero.modules.laws.businessSupport.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

+ * 国内整车型号及VIN前八位管控库 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("laws_vehicle_domestic_library") +@ApiModel(value="LawsVehicleDomesticLibrary对象", description="整车型号及VIN前八位管控库-国内") +public class LawsVehicleDomesticLibrary implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "能源类型") + private String energyType; + + @ApiModelProperty(value = "整车型号") + private String vehicleModel; + + @ApiModelProperty(value = "vin前八位") + private String vinTopEight; + + @ApiModelProperty(value = "整车型号编制依据") + private String vehicleBasis; + + @ApiModelProperty(value = "vin编制依据") + private String vinBasis; + + @ApiModelProperty(value = "代替整车型号") + private String insteadVehicleModel; + + @ApiModelProperty(value = "申请人") + private String applicant; + + @ApiModelProperty(value = "完成日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date finishDate; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "法规工程师") + private String regulatoryEngineer; + + @ApiModelProperty(value = "状态") + private String state; + + @ApiModelProperty(value = "逻辑删除") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @TableField(exist = false) + @ApiModelProperty(value = "车型代码") + private String vehicleTypeCode; + + @TableField(exist = false) + @ApiModelProperty(value = "子表数据") + private LawsVehicleDomesticLibrarySublist lawsVehicleDomesticLibrarySublist; + + @ApiModelProperty(value = "发动机型号") + private String engineType; + + @ApiModelProperty(value = "变速器型式") + private String transmissionType; + + @ApiModelProperty(value = "变速器型号") + private String transmissionModel; + + @ApiModelProperty(value = "发动机排量(L)") + private String engineCapacity; + + @ApiModelProperty(value = "排放水平") + private String emissionLevel; + + @ApiModelProperty(value = "油耗阶段") + private String fuelConsumptionStage; + + @ApiModelProperty(value = "前排正面气囊") + private String frontFrontAirbag; + + @ApiModelProperty(value = "前排座椅侧气囊") + private String frontSeatSideAirbags; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrarySublist.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrarySublist.java new file mode 100644 index 00000000..c5ecdaaa --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrarySublist.java @@ -0,0 +1,140 @@ +package com.jero.modules.laws.businessSupport.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

+ * 国内整车型号及VIN前八位管控库-子表 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("laws_vehicle_domestic_library_sublist") +@ApiModel(value="LawsVehicleDomesticLibrarySublist对象", description="国内整车型号及VIN前八位管控库-子表") +public class LawsVehicleDomesticLibrarySublist implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "整车型号id") + private String vehicleId; + + @ApiModelProperty(value = "车型代码") + private String vehicleTypeCode; + + @ApiModelProperty(value = "动力类型") + private String powerType; + + @ApiModelProperty(value = "车辆外廓尺寸(长*宽*高)") + private String carOutSize; + + @ApiModelProperty(value = "前后标牌") + private String aroundSignage; + + @ApiModelProperty(value = "整备质量(教练车)") + private String vehicleQuality; + + @ApiModelProperty(value = "驱动型式") + private String drivingType; + + @ApiModelProperty(value = "车身形式") + private String bodyType; + + @ApiModelProperty(value = "燃料类型") + private String fuelType; + + @ApiModelProperty(value = "发动机型号") + private String engineType; + + @ApiModelProperty(value = "变速器型式") + private String transmissionType; + + @ApiModelProperty(value = "变速器型号") + private String transmissionModel; + + @ApiModelProperty(value = "发动机排量(L)") + private String engineCapacity; + + @ApiModelProperty(value = "驱动电机型号") + private String driveMotorModel; + + @ApiModelProperty(value = "驱动电机峰值功率(kw)") + private String driveMotorPeakPower; + + @ApiModelProperty(value = "驱动电机额定功率(kw)") + private String driveMotorRatedPower; + + @ApiModelProperty(value = "驱动电机类型") + private String driveMotorType; + + @ApiModelProperty(value = "动力电池型号") + private String powerBatteryModel; + + @ApiModelProperty(value = "电池类型") + private String batteryType; + + @ApiModelProperty(value = "混合方式") + private String mixedModel; + + @ApiModelProperty(value = "动力电池组标称电压") + private String powerBatteryVoltage; + + @ApiModelProperty(value = "动力电池组总成标称容量") + private String powerBatteryVolume; + + @ApiModelProperty(value = "驱动电机的布置位置") + private String driveMotorPlace; + + @ApiModelProperty(value = "排放水平") + private String emissionLevel; + + @ApiModelProperty(value = "油耗阶段") + private String fuelConsumptionStage; + + @ApiModelProperty(value = "前排正面气囊") + private String frontFrontAirbag; + + @ApiModelProperty(value = "前排座椅侧气囊") + private String frontSeatSideAirbags; + + @ApiModelProperty(value = "逻辑删除") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsRegulationsQuestionLibraryMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsRegulationsQuestionLibraryMapper.java new file mode 100644 index 00000000..2c6b4f96 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsRegulationsQuestionLibraryMapper.java @@ -0,0 +1,21 @@ +package com.jero.modules.laws.businessSupport.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.modules.laws.businessSupport.entity.LawsRegulationsQuestionLibrary; +import org.apache.ibatis.annotations.Param; + +/** + *

+ * 法规释疑库表 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-20 + */ +public interface LawsRegulationsQuestionLibraryMapper extends BaseMapper { + + IPage getPageList(Page page, @Param("param") LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary); + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibraryMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibraryMapper.java new file mode 100644 index 00000000..bc81d076 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibraryMapper.java @@ -0,0 +1,16 @@ +package com.jero.modules.laws.businessSupport.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; + +/** + *

+ * 整车型号及VIN前八位管控库-国内 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-23 + */ +public interface LawsVehicleDomesticLibraryMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibrarySublistMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibrarySublistMapper.java new file mode 100644 index 00000000..f1d4eeaa --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleDomesticLibrarySublistMapper.java @@ -0,0 +1,16 @@ +package com.jero.modules.laws.businessSupport.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySublist; + +/** + *

+ * 国内整车型号及VIN前八位管控库-子表 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-23 + */ +public interface LawsVehicleDomesticLibrarySublistMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsRegulationsQuestionLibraryMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsRegulationsQuestionLibraryMapper.xml new file mode 100644 index 00000000..5376554b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsRegulationsQuestionLibraryMapper.xml @@ -0,0 +1,32 @@ + + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibraryMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibraryMapper.xml new file mode 100644 index 00000000..b583a188 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibraryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibrarySublistMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibrarySublistMapper.xml new file mode 100644 index 00000000..77f98cf0 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleDomesticLibrarySublistMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsRegulationsQuestionLibraryService.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsRegulationsQuestionLibraryService.java new file mode 100644 index 00000000..474f42bd --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsRegulationsQuestionLibraryService.java @@ -0,0 +1,47 @@ +package com.jero.modules.laws.businessSupport.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.laws.businessSupport.entity.LawsRegulationsQuestionLibrary; + +/** + *

+ * 法规释疑库表 服务类 + *

+ * + * @author sz + * @since 2024-09-20 + */ +public interface ILawsRegulationsQuestionLibraryService extends IService { + + /** + * 分页查询 + * @param lawsRegulationsQuestionLibrary + * @param pageNo + * @param pageSize + * @return + */ + IPage queryPage(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary, Integer pageNo, Integer pageSize); + + /** + * 保存 + * @param lawsRegulationsQuestionLibrary + */ + void add(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 通过id查询 + * @param id + * @return + */ + LawsRegulationsQuestionLibrary queryById(String id); + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibraryService.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibraryService.java new file mode 100644 index 00000000..f6f13d06 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibraryService.java @@ -0,0 +1,28 @@ +package com.jero.modules.laws.businessSupport.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.common.api.vo.Result; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; + +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 整车型号及VIN前八位管控库-国内 服务类 + *

+ * + * @author sz + * @since 2024-09-23 + */ +public interface ILawsVehicleDomesticLibraryService extends IService { + + IPage queryPageList(LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary, Integer pageNo, Integer pageSize, HttpServletRequest req); + + Result queryOne(String id); + + Result delete(JSONObject jsonObject); + + Result abolish(JSONObject jsonObject); +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibrarySublistService.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibrarySublistService.java new file mode 100644 index 00000000..28fedfed --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleDomesticLibrarySublistService.java @@ -0,0 +1,16 @@ +package com.jero.modules.laws.businessSupport.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySublist; + +/** + *

+ * 国内整车型号及VIN前八位管控库-子表 服务类 + *

+ * + * @author sz + * @since 2024-09-23 + */ +public interface ILawsVehicleDomesticLibrarySublistService extends IService { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsRegulationsQuestionLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsRegulationsQuestionLibraryServiceImpl.java new file mode 100644 index 00000000..3e2052a1 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsRegulationsQuestionLibraryServiceImpl.java @@ -0,0 +1,112 @@ +package com.jero.modules.laws.businessSupport.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.ResultCommon; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.laws.businessSupport.entity.LawsRegulationsQuestionLibrary; +import com.jero.modules.laws.businessSupport.mapper.LawsRegulationsQuestionLibraryMapper; +import com.jero.modules.laws.businessSupport.service.ILawsRegulationsQuestionLibraryService; +import com.jero.modules.laws.common.constant.FieldCommon; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 法规释疑库表 服务实现类 + *

+ * + * @author sz + * @since 2024-09-20 + */ +@Service +@Transactional(rollbackFor = JeroBootException.class) +public class LawsRegulationsQuestionLibraryServiceImpl extends ServiceImpl implements ILawsRegulationsQuestionLibraryService { + + @Resource + private LawsRegulationsQuestionLibraryMapper lawsRegulationsQuestionLibraryMapper; + + + @Override + public IPage queryPage(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary, Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + lawsRegulationsQuestionLibrary.setWriter(loginUser.getId()); + if (loginUser.getRoleIds().contains("admin")){ + lawsRegulationsQuestionLibrary.setIsAdmin("1"); + } + IPage pageList = lawsRegulationsQuestionLibraryMapper.getPageList(page, lawsRegulationsQuestionLibrary); + setResultData(pageList.getRecords()); + return pageList; + } + + @Override + public void add(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary) { + if (StringUtils.isBlank(lawsRegulationsQuestionLibrary.getQuestionSpecializedModule())) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "questionSpecializedModule"); + } + // 判断是否拥有操作权限(管理员和编辑人拥有权限) + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + isHaveOperateAuth(lawsRegulationsQuestionLibrary); + lawsRegulationsQuestionLibrary.setWriter(loginUser.getId()); + // 编辑后更新创建时间为最新时间,让其排在最前面 + lawsRegulationsQuestionLibrary.setCreateTime(new Date()); + saveOrUpdate(lawsRegulationsQuestionLibrary); + } + + private void isHaveOperateAuth(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary) { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (StringUtils.isNotBlank(lawsRegulationsQuestionLibrary.getWriter()) + && !lawsRegulationsQuestionLibrary.getWriter().equals(loginUser.getId()) + && !loginUser.getRoleIds().contains(FieldCommon.ROLE_ADMIN)) { + throw new JeroBootException(ResultCommon.NO_PERMISSION); + } + } + + @Override + public void deleteById(String id) { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary = getById(id); + if (!loginUser.getId().equals(lawsRegulationsQuestionLibrary.getWriter()) + && !loginUser.getRoleIds().contains(FieldCommon.ROLE_ADMIN)) { + throw new JeroBootException(ResultCommon.NO_PERMISSION); + } + removeById(id); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public LawsRegulationsQuestionLibrary queryById(String id) { + LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary = getById(id); + if (Objects.isNull(lawsRegulationsQuestionLibrary)) { + throw new JeroBootException(ResultCommon.NO_CORRESPONDING_DATA_FOUND); + } + return lawsRegulationsQuestionLibrary; + } + + private void setResultData(List pageList) { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + pageList.forEach(lawsRegulationsQuestionLibrary -> { + if (loginUser.getRoleIds().contains(FieldCommon.ROLE_ADMIN) || loginUser.getId().equals(lawsRegulationsQuestionLibrary.getWriter())) { + // 可以编辑和删除 + lawsRegulationsQuestionLibrary.setIsEditAndRemove(true); + } else { + // 不能编辑和删除 + lawsRegulationsQuestionLibrary.setIsEditAndRemove(false); + } + }); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java new file mode 100644 index 00000000..5760a83b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java @@ -0,0 +1,119 @@ +package com.jero.modules.laws.businessSupport.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +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.constant.enums.LanguageEnum; +import com.jero.common.exception.JeroBootException; +import com.jero.common.util.MessageUtils; +import com.jero.modules.laws.businessSupport.common.Constant; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySublist; +import com.jero.modules.laws.businessSupport.mapper.LawsVehicleDomesticLibraryMapper; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibraryService; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibrarySublistService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 整车型号及VIN前八位管控库-国内 服务实现类 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Service +public class LawsVehicleDomesticLibraryServiceImpl extends ServiceImpl implements ILawsVehicleDomesticLibraryService { + + @Resource + private ILawsVehicleDomesticLibrarySublistService lawsVehicleDomesticLibrarySublistService; + + @Override + public IPage queryPageList(LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary, Integer pageNo, Integer pageSize, HttpServletRequest req) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + String energyType = lawsVehicleDomesticLibrary.getEnergyType(); // 能源类型 + String vehicleModel = lawsVehicleDomesticLibrary.getVehicleModel(); // 整车型号 + String vinTopEight = lawsVehicleDomesticLibrary.getVinTopEight(); // VIN前八位 + String vehicleTypeCode = lawsVehicleDomesticLibrary.getVehicleTypeCode(); // 车型代码 + if (StringUtils.isNotBlank(energyType)) { + lambdaQueryWrapper.eq(LawsVehicleDomesticLibrary::getEnergyType, energyType); + } + if (StringUtils.isNotBlank(vehicleModel)) { + lambdaQueryWrapper.like(LawsVehicleDomesticLibrary::getVehicleModel, vehicleModel); + } + if (StringUtils.isNotBlank(vinTopEight)) { + lambdaQueryWrapper.like(LawsVehicleDomesticLibrary::getVinTopEight, vinTopEight); + } + if (StringUtils.isNotBlank(vehicleTypeCode)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(LawsVehicleDomesticLibrarySublist::getVehicleId); + queryWrapper.eq(LawsVehicleDomesticLibrarySublist::getVehicleTypeCode, vehicleTypeCode); + List list = lawsVehicleDomesticLibrarySublistService.list(queryWrapper); + List ids = list.stream().map(LawsVehicleDomesticLibrarySublist::getId).collect(Collectors.toList()); + lambdaQueryWrapper.in(LawsVehicleDomesticLibrary::getId, ids); + } + Page page = new Page<>(pageNo, pageSize); + Page result = page(page, lambdaQueryWrapper); + return result; + } + + @Override + public Result queryOne(String id) { + if (StringUtils.isBlank(id)) { + throw new JeroBootException(ResultCommon.PARAMETERS_CANNOT_BE_NULL); + } + LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary = getById(id); + if (Objects.isNull(lawsVehicleDomesticLibrary)) { + throw new JeroBootException(ResultCommon.PARAMETERS_CANNOT_BE_NULL); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsVehicleDomesticLibrarySublist::getVehicleId, id); + LawsVehicleDomesticLibrarySublist lawsVehicleDomesticLibrarySublist = lawsVehicleDomesticLibrarySublistService.getOne(queryWrapper, false); + lawsVehicleDomesticLibrary.setLawsVehicleDomesticLibrarySublist(lawsVehicleDomesticLibrarySublist); + return Result.OK(lawsVehicleDomesticLibrary); + } + + @Override + public Result delete(JSONObject jsonObject) { + String id = jsonObject.getString("id"); + if(StringUtils.isBlank(id)){ + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + // 删除主表数据 + removeById(id); + // 删除子表数据 + lawsVehicleDomesticLibrarySublistService.remove(new LambdaQueryWrapper().eq(LawsVehicleDomesticLibrarySublist::getVehicleId, id)); + return Result.OK(ResultCommon.OK); + } + + @Override + public Result abolish(JSONObject jsonObject) { + String id = jsonObject.getString("id"); + if(StringUtils.isBlank(id)){ + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary = getById(id); + if (Constant.ABOLISH.equals(lawsVehicleDomesticLibrary.getState())) { + String errMessage = ""; + if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())){ + errMessage = "状态已经是废止了"; + }else{ + errMessage = "The status is already abolished"; + } + throw new JeroBootException(errMessage); + } + lawsVehicleDomesticLibrary.setState(Constant.ABOLISH); + updateById(lawsVehicleDomesticLibrary); + return Result.OK(); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibrarySublistServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibrarySublistServiceImpl.java new file mode 100644 index 00000000..2adba06b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibrarySublistServiceImpl.java @@ -0,0 +1,20 @@ +package com.jero.modules.laws.businessSupport.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySublist; +import com.jero.modules.laws.businessSupport.mapper.LawsVehicleDomesticLibrarySublistMapper; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibrarySublistService; +import org.springframework.stereotype.Service; + +/** + *

+ * 国内整车型号及VIN前八位管控库-子表 服务实现类 + *

+ * + * @author sz + * @since 2024-09-23 + */ +@Service +public class LawsVehicleDomesticLibrarySublistServiceImpl extends ServiceImpl implements ILawsVehicleDomesticLibrarySublistService { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/club/mapper/xml/LawsClubPaymentMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/club/mapper/xml/LawsClubPaymentMapper.xml index 86378323..695b7429 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/club/mapper/xml/LawsClubPaymentMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/club/mapper/xml/LawsClubPaymentMapper.xml @@ -2,4 +2,4 @@ - + \ No newline at end of file