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 index c9301195..c64094dc 100644 --- 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 @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.vehicledomestic.controller; +import com.alibaba.fastjson.JSONObject; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.Translation; @@ -80,6 +81,13 @@ public class ProcessVehicleDomesticReleaseController { return Result.OK(); } + @AutoLog(value = "国内整车型号和VIN前八位管控流程-校验整车型号") + @ApiOperation(value = "国内整车型号和VIN前八位管控流程-校验整车型号", notes = "国内整车型号和VIN前八位管控流程-校验整车型号") + @PostMapping("/checkVehicleModel") + public Result checkVehicleModel(@RequestBody JSONObject jsonObject) { + return processVehicleDomesticReleaseService.checkVehicleModel(jsonObject); + } + @AutoLog(value = "国内整车型号和VIN前八位管控流程-办理") @ApiOperation(value="国内整车型号和VIN前八位管控流程-办理", notes="国内整车型号和VIN前八位管控流程-办理") @GetMapping("/handle/{taskId}") 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 index f7e0924f..28ccdb18 100644 --- 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 @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.vehicledomestic.service; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.common.api.vo.Result; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; @@ -29,4 +30,6 @@ public interface IProcessVehicleDomesticReleaseService extends IService processInfoVO); ProcessInfoVO getHandleData(String taskId); + + Result checkVehicleModel(JSONObject jsonObject); } 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 index a3304a57..e7229d70 100644 --- 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 @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.vehicledomestic.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -38,6 +39,7 @@ import org.activiti.engine.TaskService; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -45,6 +47,7 @@ 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.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -307,6 +310,27 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl checkVehicleModel(JSONObject jsonObject) { + if (Objects.isNull(jsonObject) || StringUtils.isBlank(jsonObject.getString("vehicleModel"))) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "vehicleModel"); + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(LawsVehicleDomesticLibrary::getIsFinish, Constant.IS_FINISH); + lambdaQueryWrapper.eq(LawsVehicleDomesticLibrary::getVehicleModel, jsonObject.getString("vehicleModel")); + LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary = lawsVehicleDomesticLibraryService.getOne(lambdaQueryWrapper, false); + if (!Objects.isNull(lawsVehicleDomesticLibrary)) { + String msg = (Objects.equals(LocaleContextHolder.getLocale(), Locale.ENGLISH) ? + "The vehicleModel is already exist" : "该整车型号已存在"); + Result result = new Result<>(); + result.setMessage(msg); + result.setSuccess(false); // 前端根据success判断是否通过验证 + return result; + }else { + return Result.OK(); + } + } + @Override public ProcessInfoVO getHandleData(String taskId) { if (!actFlowCommonService.taskExists(taskId)) { @@ -704,6 +728,6 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl replace(@RequestBody ProcessVehicleDomesticReleaseVo processVehicleDomesticReleaseVo) { return lawsVehicleDomesticControlLibraryService.replace(processVehicleDomesticReleaseVo); } + + /** + * 导出 + */ + @AutoLog(value = "国内整车型号及VIN前八位管控库-导出") + @ApiOperation(value="国内整车型号及VIN前八位管控库-导出", notes="国内整车型号及VIN前八位管控库-导出") + @GetMapping(value = "/exportXls") +// @RequiresPermissions("companyStandardStatistics:delete") + public ModelAndView exportXls(HttpServletRequest request) { + return lawsVehicleDomesticControlLibraryService.exportXls(request); + } } 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 index b23d83a6..2a6cc505 100644 --- 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.jero.common.api.vo.Result; import com.jero.modules.activiti.process.vehicledomestic.vo.ProcessVehicleDomesticReleaseVo; import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; +import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; /** @@ -28,4 +29,5 @@ public interface ILawsVehicleDomesticLibraryService extends IService replace(ProcessVehicleDomesticReleaseVo processVehicleDomesticReleaseVo); + ModelAndView exportXls(HttpServletRequest request); } 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 index 62be3b38..e7b3f4db 100644 --- 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 @@ -9,6 +9,8 @@ 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.oConvertUtils; import com.jero.modules.activiti.process.vehicledomestic.vo.ProcessVehicleDomesticReleaseVo; import com.jero.modules.laws.businessSupport.common.Constant; import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; @@ -16,16 +18,22 @@ import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySu 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 com.jero.modules.laws.club.config.CustomExcelExportStyler; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.BeanUtils; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.Locale; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,6 +45,8 @@ import java.util.stream.Collectors; * @since 2024-09-23 */ @Service +@Transactional(rollbackFor = JeroBootException.class) +@Slf4j public class LawsVehicleDomesticLibraryServiceImpl extends ServiceImpl implements ILawsVehicleDomesticLibraryService { @Resource @@ -44,33 +54,7 @@ public class LawsVehicleDomesticLibraryServiceImpl extends ServiceImpl 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.like(LawsVehicleDomesticLibrarySublist::getVehicleTypeCode, vehicleTypeCode); - List list = lawsVehicleDomesticLibrarySublistService.list(queryWrapper); - List ids = list.stream().map(LawsVehicleDomesticLibrarySublist::getVehicleId).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(ids)) { - lambdaQueryWrapper.in(LawsVehicleDomesticLibrary::getId, ids); - }else { - lambdaQueryWrapper.in(LawsVehicleDomesticLibrary::getId, ""); - } - } - lambdaQueryWrapper.eq(LawsVehicleDomesticLibrary::getIsFinish, Constant.IS_FINISH); // 只展示走完流程的数据 + LambdaQueryWrapper lambdaQueryWrapper = generationWrapper(req); Page page = new Page<>(pageNo, pageSize); Page result = page(page, lambdaQueryWrapper); return result; @@ -128,28 +112,102 @@ public class LawsVehicleDomesticLibraryServiceImpl extends ServiceImpl replace(ProcessVehicleDomesticReleaseVo processVehicleDomesticReleaseVo) { // 原数据 String oldId = processVehicleDomesticReleaseVo.getId(); + // 原数据的整车型号 LawsVehicleDomesticLibrary oldMainData = getById(oldId); if (Objects.isNull(oldMainData)) { throw new JeroBootException(ResultCommon.PARAMETERS_CANNOT_BE_NULL); } + String oldVehicleModel = oldMainData.getVehicleModel(); // 新数据 LawsVehicleDomesticLibrary newMainData = new LawsVehicleDomesticLibrary(); BeanUtils.copyProperties(processVehicleDomesticReleaseVo, newMainData); newMainData.setState(Constant.TAKE_EFFECT); newMainData.setIsFinish(Constant.IS_FINISH); + newMainData.setInsteadVehicleModel(oldVehicleModel); newMainData.setId(null); LawsVehicleDomesticLibrarySublist lawsVehicleDomesticLibrarySublist = new LawsVehicleDomesticLibrarySublist(); BeanUtils.copyProperties(processVehicleDomesticReleaseVo, lawsVehicleDomesticLibrarySublist); // 保存新数据 save(newMainData); String vehicleId = newMainData.getId(); + lawsVehicleDomesticLibrarySublist.setId(null); lawsVehicleDomesticLibrarySublist.setVehicleId(vehicleId); lawsVehicleDomesticLibrarySublistService.save(lawsVehicleDomesticLibrarySublist); // 修改旧数据的状态为作废 LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.eq(LawsVehicleDomesticLibrary::getId, oldId); lambdaUpdateWrapper.set(LawsVehicleDomesticLibrary::getState, Constant.ABOLISH); - updateById(newMainData); + update(lambdaUpdateWrapper); return Result.OK(); } + + @Override + public ModelAndView exportXls(HttpServletRequest request) { + LambdaQueryWrapper lambdaQueryWrapper = generationWrapper(request); + String selections = request.getParameter("selections"); + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + if(!oConvertUtils.isEmpty(selections)){ + lambdaQueryWrapper.in(LawsVehicleDomesticLibrary::getId, Arrays.asList(selections.split(","))); + } + List list = list(lambdaQueryWrapper); + List collectIds = list.stream().map(LawsVehicleDomesticLibrary::getId).collect(Collectors.toList()); + List excelList = new ArrayList<>(); + for (String collectId : collectIds) { + LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary = getById(collectId); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsVehicleDomesticLibrarySublist::getVehicleId, collectId); + LawsVehicleDomesticLibrarySublist lawsVehicleDomesticLibrarySublist = lawsVehicleDomesticLibrarySublistService.getOne(queryWrapper, false); + ProcessVehicleDomesticReleaseVo processVehicleDomesticReleaseVo = new ProcessVehicleDomesticReleaseVo(); + BeanUtils.copyProperties(lawsVehicleDomesticLibrary, processVehicleDomesticReleaseVo); + BeanUtils.copyProperties(lawsVehicleDomesticLibrarySublist, processVehicleDomesticReleaseVo); + processVehicleDomesticReleaseVo.setId(lawsVehicleDomesticLibrary.getId()); + excelList.add(processVehicleDomesticReleaseVo); + } + //导出文件名称 + mv.addObject(JeroController.FILE_NAME, "国内"); + mv.addObject(JeroController.CLASS, ProcessVehicleDomesticReleaseVo.class); + mv.addObject(JeroController.PARAMS, createExportParams("密级:核心商密□普通商密□内部资料■外部公开□", "国内")); + mv.addObject(NormalExcelConstants.DATA_LIST, excelList); + return mv; + } + + private LambdaQueryWrapper generationWrapper(HttpServletRequest request) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + String energyType = request.getParameter("energyType"); // 能源类型 + String vehicleModel = request.getParameter("vehicleModel"); // 整车型号 + String vinTopEight = request.getParameter("vinTopEight"); // VIN前八位 + String vehicleTypeCode = request.getParameter("vehicleTypeCode"); // 车型代码 + 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.like(LawsVehicleDomesticLibrarySublist::getVehicleTypeCode, vehicleTypeCode); + List list = lawsVehicleDomesticLibrarySublistService.list(queryWrapper); + List ids = list.stream().map(LawsVehicleDomesticLibrarySublist::getVehicleId).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(ids)) { + lambdaQueryWrapper.in(LawsVehicleDomesticLibrary::getId, ids); + }else { + lambdaQueryWrapper.in(LawsVehicleDomesticLibrary::getId, ""); + } + } + lambdaQueryWrapper.eq(LawsVehicleDomesticLibrary::getIsFinish, Constant.IS_FINISH); // 只展示走完流程的数据 + return lambdaQueryWrapper; + } + + private ExportParams createExportParams(String title, String sheetName) { + ExportParams exportParams = new ExportParams(); + exportParams.setTitle(title); + exportParams.setType(ExcelType.HSSF); + exportParams.setSheetName(sheetName); + exportParams.setStyle(CustomExcelExportStyler.class); + return exportParams; + } }