update:整车型号导入校验

This commit is contained in:
sunzheng
2024-10-15 15:49:38 +08:00
parent 2edadf4361
commit ad64e1ebb5
12 changed files with 276 additions and 300 deletions
@@ -10,7 +10,9 @@ import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.vehicledomestic.service.IProcessVehicleDomesticReleaseService; import com.jero.modules.activiti.process.vehicledomestic.service.IProcessVehicleDomesticReleaseService;
import com.jero.modules.activiti.process.vehicledomestic.vo.ProcessVehicleDomesticReleaseVo; import com.jero.modules.activiti.process.vehicledomestic.vo.ProcessVehicleDomesticReleaseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -26,6 +28,8 @@ import javax.servlet.http.HttpServletRequest;
* @author sz * @author sz
* @since 2024-09-23 * @since 2024-09-23
*/ */
@Slf4j
@Api(tags = "国内整车型号和VIN前八位管控流程 ")
@RestController @RestController
@RequestMapping("/process/vehicle/domestic") @RequestMapping("/process/vehicle/domestic")
public class ProcessVehicleDomesticReleaseController { public class ProcessVehicleDomesticReleaseController {
@@ -100,4 +104,5 @@ public class ProcessVehicleDomesticReleaseController {
return Result.OK(processVehicleDomesticReleaseService.getHandleData(taskId)); return Result.OK(processVehicleDomesticReleaseService.getHandleData(taskId));
} }
} }
@@ -3,11 +3,13 @@ package com.jero.modules.activiti.process.vehicledomestic.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.DictModel;
import com.jero.common.util.ImportExcelUtil; import com.jero.common.util.ImportExcelUtil;
import com.jero.modules.activiti.common.ActivitiCommon; import com.jero.modules.activiti.common.ActivitiCommon;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
@@ -32,14 +34,18 @@ import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary;
import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySublist; import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrarySublist;
import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibraryService; import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibraryService;
import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibrarySublistService; import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibrarySublistService;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.service.ISysDictService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task; import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils; 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.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -47,6 +53,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType; import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -58,6 +65,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS; import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
@@ -97,6 +105,10 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
private ILawsVehicleDomesticLibraryService lawsVehicleDomesticLibraryService; private ILawsVehicleDomesticLibraryService lawsVehicleDomesticLibraryService;
@Resource @Resource
private ILawsVehicleDomesticLibrarySublistService lawsVehicleDomesticLibrarySublistService; private ILawsVehicleDomesticLibrarySublistService lawsVehicleDomesticLibrarySublistService;
@Resource
private ISysDictService sysDictService;
@Autowired
private ILawsCommonService lawsCommonService;
@Override @Override
public ModelAndView exportTemplateByType(HttpServletRequest request) { public ModelAndView exportTemplateByType(HttpServletRequest request) {
@@ -321,7 +333,7 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary = lawsVehicleDomesticLibraryService.getOne(lambdaQueryWrapper, false); LawsVehicleDomesticLibrary lawsVehicleDomesticLibrary = lawsVehicleDomesticLibraryService.getOne(lambdaQueryWrapper, false);
if (!Objects.isNull(lawsVehicleDomesticLibrary)) { if (!Objects.isNull(lawsVehicleDomesticLibrary)) {
String msg = (Objects.equals(LocaleContextHolder.getLocale(), Locale.ENGLISH) ? String msg = (Objects.equals(LocaleContextHolder.getLocale(), Locale.ENGLISH) ?
"The vehicleModel:" + jsonObject.getString("vehicleModel") + "is already exist" : "整车型:" + jsonObject.getString("vehicleModel") +"已存在"); "The vehicleModel:" + jsonObject.getString("vehicleModel") + "is already exist" : "整车型:" + jsonObject.getString("vehicleModel") +"已存在");
Result<String> result = new Result<>(); Result<String> result = new Result<>();
result.setMessage(msg); result.setMessage(msg);
result.setSuccess(false); // 前端根据success判断是否通过验证 result.setSuccess(false); // 前端根据success判断是否通过验证
@@ -496,10 +508,12 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
BaseExcel baseExcel = new BaseExcel(); BaseExcel baseExcel = new BaseExcel();
BeanUtils.copyProperties(fuelOilExcel, baseExcel); BeanUtils.copyProperties(fuelOilExcel, baseExcel);
validateCommonFields(baseExcel, i, msgSub); validateCommonFields(baseExcel, i, msgSub);
BeanUtils.copyProperties(baseExcel, fuelOilExcel);
// 校验燃油类型的特有字段 // 校验燃油类型的特有字段
OilAndHybridExcel oilAndHybridExcel = new OilAndHybridExcel(); OilAndHybridExcel oilAndHybridExcel = new OilAndHybridExcel();
BeanUtils.copyProperties(fuelOilExcel, oilAndHybridExcel); BeanUtils.copyProperties(fuelOilExcel, oilAndHybridExcel);
validateOilAndHybridFields(oilAndHybridExcel, i , msgSub); validateOilAndHybridFields(oilAndHybridExcel, i , msgSub);
BeanUtils.copyProperties(oilAndHybridExcel, fuelOilExcel);
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append(NEWLINE_CHARACTER); msg.append(msgSub).append(NEWLINE_CHARACTER);
} }
@@ -517,10 +531,12 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
BaseExcel baseExcel = new BaseExcel(); BaseExcel baseExcel = new BaseExcel();
BeanUtils.copyProperties(pureElectricExcel, baseExcel); BeanUtils.copyProperties(pureElectricExcel, baseExcel);
validateCommonFields(baseExcel, i, msgSub); validateCommonFields(baseExcel, i, msgSub);
BeanUtils.copyProperties(baseExcel, pureElectricExcel);
// 校验纯电类型的特有字段 // 校验纯电类型的特有字段
ElectricAndHybridExcel electricAndHybridExcel = new ElectricAndHybridExcel(); ElectricAndHybridExcel electricAndHybridExcel = new ElectricAndHybridExcel();
BeanUtils.copyProperties(pureElectricExcel, electricAndHybridExcel); BeanUtils.copyProperties(pureElectricExcel, electricAndHybridExcel);
validateElectricAndHybridFields(electricAndHybridExcel, i , msgSub); validateElectricAndHybridFields(electricAndHybridExcel, i , msgSub);
BeanUtils.copyProperties(electricAndHybridExcel, pureElectricExcel);
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append(NEWLINE_CHARACTER); msg.append(msgSub).append(NEWLINE_CHARACTER);
} }
@@ -530,6 +546,7 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
// 校验混合动力类型的字段 // 校验混合动力类型的字段
private StringBuilder validatorHybridPower(List<HybridPowerExcel> excelList) { private StringBuilder validatorHybridPower(List<HybridPowerExcel> excelList) {
Map<String, String> mixedModelMap = getDictMap("dvm_mixed_model");
StringBuilder msg = new StringBuilder(); StringBuilder msg = new StringBuilder();
for (int i = 0; i < excelList.size(); i++) { for (int i = 0; i < excelList.size(); i++) {
HybridPowerExcel hybridPowerExcel = excelList.get(i); HybridPowerExcel hybridPowerExcel = excelList.get(i);
@@ -538,17 +555,17 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
BaseExcel baseExcel = new BaseExcel(); BaseExcel baseExcel = new BaseExcel();
BeanUtils.copyProperties(hybridPowerExcel, baseExcel); BeanUtils.copyProperties(hybridPowerExcel, baseExcel);
validateCommonFields(baseExcel, i, msgSub); validateCommonFields(baseExcel, i, msgSub);
BeanUtils.copyProperties(baseExcel, hybridPowerExcel);
// 校验混合动力类型的特有字段 // 校验混合动力类型的特有字段
OilAndHybridExcel oilAndHybridExcel = new OilAndHybridExcel(); OilAndHybridExcel oilAndHybridExcel = new OilAndHybridExcel();
BeanUtils.copyProperties(hybridPowerExcel, oilAndHybridExcel); BeanUtils.copyProperties(hybridPowerExcel, oilAndHybridExcel);
validateOilAndHybridFields(oilAndHybridExcel, i , msgSub); validateOilAndHybridFields(oilAndHybridExcel, i , msgSub);
BeanUtils.copyProperties(oilAndHybridExcel, hybridPowerExcel);
ElectricAndHybridExcel electricAndHybridExcel = new ElectricAndHybridExcel(); ElectricAndHybridExcel electricAndHybridExcel = new ElectricAndHybridExcel();
BeanUtils.copyProperties(hybridPowerExcel, electricAndHybridExcel); BeanUtils.copyProperties(hybridPowerExcel, electricAndHybridExcel);
validateElectricAndHybridFields(electricAndHybridExcel, i , msgSub); validateElectricAndHybridFields(electricAndHybridExcel, i , msgSub);
// 校验混合方式 BeanUtils.copyProperties(electricAndHybridExcel, hybridPowerExcel);
if (StringUtils.isBlank(hybridPowerExcel.getMixedModel())) { validateAndSetField(i, "混合方式", hybridPowerExcel.getMixedModel(), mixedModelMap, msgSub, true, hybridPowerExcel::setMixedModel);
msgSub.append(getErrorMsg(i, "混合方式不能为空;"));
}
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append(NEWLINE_CHARACTER); msg.append(msgSub).append(NEWLINE_CHARACTER);
} }
@@ -558,85 +575,61 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
// 通用字段校验 // 通用字段校验
private StringBuilder validateCommonFields(Object excelObject, int index, StringBuilder msgSub) { private StringBuilder validateCommonFields(Object excelObject, int index, StringBuilder msgSub) {
Map<String, String> vehicleTypeCodeMap = getDictMap("vm_vehicle_type_code");
Map<String, String> powerTypeMap = getDictMap("vm_power_type");
Map<String, String> drivingTypeMap = getDictMap("vm_driving_type");
Map<String, String> bodyTypeMap = getDictMap("vm_body_type");
Map<String, String> fuelTypeListMap = getDictMap("vm_fuel_type");;
Map<String, String> frontFrontAirbagMap = getDictMap("vm_front_front_airbag");
Map<String, String> frontSeatSideAirbagsMap = getDictMap("vm_front_seat_side_airbags");
// 车型代码(必填,下拉单选,来源BOM) // 车型代码(必填,下拉单选,来源BOM)
if (excelObject instanceof BaseExcel) { if (excelObject instanceof BaseExcel) {
BaseExcel baseModel = (BaseExcel) excelObject; BaseExcel baseModel = (BaseExcel) excelObject;
// 车型代码(必填,下拉单选,来源BOM) validateAndSetField(index, "车型代码", baseModel.getVehicleTypeCode(), vehicleTypeCodeMap, msgSub, true, baseModel::setVehicleTypeCode);
if (StringUtils.isBlank(baseModel.getVehicleTypeCode())) { validateAndSetField(index, "动力类型", baseModel.getPowerType(), powerTypeMap, msgSub, true, baseModel::setPowerType);
msgSub.append(getErrorMsg(index, "车型代码不能为空;")); validateAndSetField(index, "驱动型式", baseModel.getDrivingType(), drivingTypeMap, msgSub, true, baseModel::setDrivingType);
} validateAndSetField(index, "车身形式", baseModel.getBodyType(), bodyTypeMap, msgSub, true, baseModel::setBodyType);
// 动力类型(必填,下拉单选,来源BOM) validateAndSetField(index, "燃料类型", baseModel.getFuelType(), fuelTypeListMap, msgSub, true, baseModel::setFuelType);
if (StringUtils.isBlank(baseModel.getPowerType())) { validateAndSetField(index, "前排正面气囊", baseModel.getFrontFrontAirbag(), frontFrontAirbagMap, msgSub, true, baseModel::setFrontFrontAirbag);
msgSub.append(getErrorMsg(index, "动力类型不能为空;")); validateAndSetField(index, "前排座椅侧气囊", baseModel.getFrontSeatSideAirbags(), frontSeatSideAirbagsMap, msgSub, false, baseModel::setFrontSeatSideAirbags);
} validateField(index, "车辆外廓尺寸", baseModel.getCarOutSize(), msgSub, true, 50);
// 车辆外廓尺寸(必填,手填,长度不超过50) validateField(index, "前后标牌", baseModel.getAroundSignage(), msgSub, true, 50);
if (StringUtils.isBlank(baseModel.getCarOutSize())) { validateField(index, "整备质量(教练车)", baseModel.getVehicleQuality(), msgSub, true, 50);
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; return msgSub;
} }
// 燃油和混合动力共有字段校验 // 燃油和混合动力共有字段校验
private StringBuilder validateOilAndHybridFields(Object excelObject, int index, StringBuilder msgSub) { private StringBuilder validateOilAndHybridFields(Object excelObject, int index, StringBuilder msgSub) {
// 车型代码(必填,下拉单选,来源BOM) Map<String, String> engineTypeMap = getDictMap("vm_engine_type");
Map<String, String> transmissionTypeMap = getDictMap("vm_transmission_type");
Map<String, String> transmissionModelMap = getDictMap("dvm_transmission_model");
Map<String, String> engineCapacityMap = getDictMap("vm_engine_capacity");
Map<String, String> emissionLevelMap = getDictMap("dvm_emission_level");
if (excelObject instanceof OilAndHybridExcel) { if (excelObject instanceof OilAndHybridExcel) {
OilAndHybridExcel oilAndHybridExcel = (OilAndHybridExcel) excelObject; OilAndHybridExcel oilAndHybridExcel = (OilAndHybridExcel) excelObject;
// 发动机型号(必填,下拉单选,来源BOM) validateAndSetField(index, "发动机型号", oilAndHybridExcel.getEngineType(), engineTypeMap, msgSub, true, oilAndHybridExcel::setEngineType);
if (StringUtils.isBlank(oilAndHybridExcel.getEngineType())) { validateAndSetField(index, "变速器型式", oilAndHybridExcel.getTransmissionType(), transmissionTypeMap, msgSub, true, oilAndHybridExcel::setTransmissionType);
msgSub.append(getErrorMsg(index, "发动机型号不能为空;")); validateAndSetField(index, "变速器型号", oilAndHybridExcel.getTransmissionModel(), transmissionModelMap, msgSub, true, oilAndHybridExcel::setTransmissionModel);
} validateAndSetField(index, "发动机排量", oilAndHybridExcel.getEngineCapacity(), engineCapacityMap, msgSub, true, oilAndHybridExcel::setEngineCapacity);
// 变速器型式(必填,下拉单选,来源BOM) validateAndSetField(index, "排放水平", oilAndHybridExcel.getEmissionLevel(), emissionLevelMap, msgSub, true, oilAndHybridExcel::setEmissionLevel);
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())) { if (StringUtils.isBlank(oilAndHybridExcel.getFuelConsumptionStage())) {
msgSub.append(getErrorMsg(index, "油耗阶段不能为空;")); msgSub.append(getErrorMsg(index, "油耗阶段不能为空,"));
} else {
// 创建查询对象
ManyStandardSelectionBoxVO selectionBoxVO = new ManyStandardSelectionBoxVO();
IPage<ManyStandardSelectionBox> manyStandardSelectionBox = lawsCommonService.getManyStandardSelectionBox(selectionBoxVO, -1, -1);
List<ManyStandardSelectionBox> records = manyStandardSelectionBox.getRecords();
// 校验油耗阶段是否存在于标准编号列表中
Optional<ManyStandardSelectionBox> matchingRecord = records.stream()
.filter(record -> Objects.equals(oilAndHybridExcel.getFuelConsumptionStage(), record.getStandardNumber()))
.findFirst();
// 如果匹配的标准存在,保存对应的id
if (matchingRecord.isPresent()) {
oilAndHybridExcel.setFuelConsumptionStage(matchingRecord.get().getId());
} else {
msgSub.append(getErrorMsg(index, "油耗阶段不存在,"));
}
} }
} }
return msgSub; return msgSub;
@@ -644,53 +637,22 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
// 纯电动和混合动力共有字段验证 // 纯电动和混合动力共有字段验证
private StringBuilder validateElectricAndHybridFields(Object excelObject, int index, StringBuilder msgSub) { private StringBuilder validateElectricAndHybridFields(Object excelObject, int index, StringBuilder msgSub) {
// 车型代码(必填,下拉单选,来源BOM) Map<String, String> driveMotorModelMap = getDictMap("vm_driveMotor_model");
Map<String, String> driveMotorTypeMap = getDictMap("dvm_drive_motor_type");
Map<String, String> powerBatteryModelMap = getDictMap("vm_power_battery_model");
Map<String, String> batteryTypeMap = getDictMap("vm_battery_type");
Map<String, String> driveMotorPlaceMap = getDictMap("dvm_drive_motor_place");
if (excelObject instanceof ElectricAndHybridExcel) { if (excelObject instanceof ElectricAndHybridExcel) {
ElectricAndHybridExcel electricAndHybridExcel = (ElectricAndHybridExcel) excelObject; ElectricAndHybridExcel electricAndHybridExcel = (ElectricAndHybridExcel) excelObject;
// 驱动电机型号(必填,下拉多选,来源BOM) validateAndSetField(index, "驱动电机型号", electricAndHybridExcel.getDriveMotorModel(), driveMotorModelMap, msgSub, true, electricAndHybridExcel::setDriveMotorModel);
if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorModel())) { validateAndSetField(index, "驱动电机类型", electricAndHybridExcel.getDriveMotorType(), driveMotorTypeMap, msgSub, true, electricAndHybridExcel::setDriveMotorType);
msgSub.append(getErrorMsg(index, "驱动电机型号不能为空;")); validateAndSetField(index, "动力电池型号", electricAndHybridExcel.getPowerBatteryModel(), powerBatteryModelMap, msgSub, true, electricAndHybridExcel::setPowerBatteryModel);
} validateAndSetField(index, "电池类型", electricAndHybridExcel.getBatteryType(), batteryTypeMap, msgSub, true, electricAndHybridExcel::setBatteryType);
// 驱动电机峰值功率(必填,手填,长度不超过50) validateAndSetField(index, "驱动电机的布置位置", electricAndHybridExcel.getDriveMotorPlace(), driveMotorPlaceMap, msgSub, true, electricAndHybridExcel::setDriveMotorPlace);
if (StringUtils.isBlank(electricAndHybridExcel.getDriveMotorPeakPower())) { validateField(index, "动力电池组标称电压", electricAndHybridExcel.getPowerBatteryVoltage(), msgSub, true, 50);
msgSub.append(getErrorMsg(index, "驱动电机峰值功率不能为空;")); validateField(index, "动力电池组总成标称容量", electricAndHybridExcel.getPowerBatteryVolume(), msgSub, true, 50);
} else if (electricAndHybridExcel.getDriveMotorPeakPower().length() > 50) { validateField(index, "驱动电机峰值功率", electricAndHybridExcel.getDriveMotorPeakPower(), msgSub, true, 50);
msgSub.append(getErrorMsg(index, "驱动电机峰值功率长度不能超过50字符;")); validateField(index, "驱动电机额定功率", electricAndHybridExcel.getDriveMotorRatedPower(), msgSub, true, 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; return msgSub;
} }
@@ -728,6 +690,38 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl<Proces
} }
} }
private Map<String, String> getDictMap(String dictCode) {
List<DictModel> dictList = sysDictService.getDictItems(dictCode);
return dictList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue));
}
private void validateField(int index, String fieldName, String fieldValue, StringBuilder msgSub, boolean isRequired, int maxLength) {
if (isRequired && StringUtils.isBlank(fieldValue)) {
msgSub.append(getErrorMsg(index, fieldName + "不能为空,"));
} else if (fieldValue.length() > maxLength) {
msgSub.append(getErrorMsg(index, fieldName + "字符长度不能超过" + maxLength + ","));
}
}
private void validateAndSetField(int index, String fieldName, String fieldValue, Map<String, String> map,
StringBuilder msgSub, boolean isRequired, Consumer<String> setter) {
// 校验是否必填
if (StringUtils.isBlank(fieldValue)) {
if (isRequired) {
msgSub.append(getErrorMsg(index, fieldName + "不能为空,"));
}
} else {
// 如果字段有值,检查是否存在于映射中
String mappedValue = map.get(fieldValue);
if (StringUtils.isBlank(mappedValue)) {
msgSub.append(getErrorMsg(index, fieldName + "不存在,"));
} else {
// 如果存在,调用setter进行设置
setter.accept(mappedValue);
}
}
}
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 2) + "" + errorMsg; return "" + (rowIndex + 2) + "" + errorMsg;
} }
@@ -10,7 +10,9 @@ import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.vehicleinterntional.service.IProcessVehicleInternationalReleaseService; import com.jero.modules.activiti.process.vehicleinterntional.service.IProcessVehicleInternationalReleaseService;
import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -26,6 +28,8 @@ import javax.servlet.http.HttpServletRequest;
* @author sz * @author sz
* @since 2024-09-29 * @since 2024-09-29
*/ */
@Slf4j
@Api(tags = "国际整车型号和VIN前八位管控流程 ")
@RestController @RestController
@RequestMapping("/process/vehicle/international") @RequestMapping("/process/vehicle/international")
public class ProcessVehicleInternationalReleaseController { public class ProcessVehicleInternationalReleaseController {
@@ -8,6 +8,7 @@ import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.vo.DictModel;
import com.jero.common.util.ImportExcelUtil; import com.jero.common.util.ImportExcelUtil;
import com.jero.modules.activiti.common.ActivitiCommon; import com.jero.modules.activiti.common.ActivitiCommon;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
@@ -33,6 +34,7 @@ import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibr
import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService; import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService;
import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibrarySublistService; import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibrarySublistService;
import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.service.ISysDictService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
@@ -55,6 +57,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS; import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
/** /**
@@ -86,6 +91,8 @@ public class ProcessVehicleInternationalReleaseServiceImpl extends ServiceImpl<P
private ILawsVehicleInternationalLibraryService lawsVehicleInternationalLibraryService; private ILawsVehicleInternationalLibraryService lawsVehicleInternationalLibraryService;
@Resource @Resource
private ILawsVehicleInternationalLibrarySublistService lawsVehicleInternationalLibrarySublistService; private ILawsVehicleInternationalLibrarySublistService lawsVehicleInternationalLibrarySublistService;
@Resource
private ISysDictService sysDictService;
private static final String NEWLINE_CHARACTER = "</br>"; private static final String NEWLINE_CHARACTER = "</br>";
@@ -453,123 +460,61 @@ public class ProcessVehicleInternationalReleaseServiceImpl extends ServiceImpl<P
private StringBuilder validatorExcel(List<ProcessVehicleInternationalExcelVo> excelList) { private StringBuilder validatorExcel(List<ProcessVehicleInternationalExcelVo> excelList) {
StringBuilder msg = new StringBuilder(); StringBuilder msg = new StringBuilder();
Map<String, String> vehicleTypeCodeMap = getDictMap("vm_vehicle_type_code");
Map<String, String> powerTypeMap = getDictMap("vm_power_type");
Map<String, String> engineTypeMap = getDictMap("vm_engine_type");
Map<String, String> driveMotorModelMap = getDictMap("vm_driveMotor_model");
Map<String, String> powerBatteryModelMap = getDictMap("vm_power_battery_model");
Map<String, String> transmissionModelMap = getDictMap("ivm_transmission_model");
Map<String, String> bodyTypeMap = getDictMap("vm_body_type");
Map<String, String> drivingTypeMap = getDictMap("vm_driving_type");
Map<String, String> drivingShaftsNumberMap = getDictMap("ivm_driving_shafts_number");
Map<String, String> steeringTypeMap = getDictMap("ivm_steering_type");
Map<String, String> seatsNumberMap = getDictMap("ivm_seats_number");
Map<String, String> engineWorkingPrincipleMap = getDictMap("ivm_engine_working_principle");
Map<String, String> fuelTypeMap = getDictMap("vm_fuel_type");
Map<String, String> engineCapacityMap = getDictMap("vm_engine_capacity");
Map<String, String> emissionLevelMap = getDictMap("dvm_emission_level");
Map<String, String> batteryTypeMap = getDictMap("vm_battery_type");
Map<String, String> transmissionTypeMap = getDictMap("vm_transmission_type");
Map<String, String> transmissionGearNumberMap = getDictMap("ivm_transmission_gear_number");
Map<String, String> ynMap = getDictMap("yn");
Map<String, String> frontFrontAirbagMap = getDictMap("vm_front_front_airbag");
Map<String, String> frontSeatSideAirbagsMap = getDictMap("vm_front_seat_side_airbags");
Map<String, String> salesAreaMap = getDictMap("ivm_sales_area");
Map<String, String> brandMap = getDictMap("ivm_brand");
for (int i = 0; i < excelList.size(); i++) { for (int i = 0; i < excelList.size(); i++) {
ProcessVehicleInternationalExcelVo excelVo = excelList.get(i); ProcessVehicleInternationalExcelVo excelVo = excelList.get(i);
StringBuilder msgSub = new StringBuilder(); StringBuilder msgSub = new StringBuilder();
// 校验车型代码 validateAndSetField(i, "车型代码", excelVo.getVehicleTypeCode(), vehicleTypeCodeMap, msgSub, true, excelVo::setVehicleTypeCode);
if (StringUtils.isBlank(excelVo.getVehicleTypeCode())) { validateAndSetField(i, "动力类型", excelVo.getPowerType(), powerTypeMap, msgSub, true, excelVo::setPowerType);
msgSub.append(getErrorMsg(i, "车型代码不能为空;")); validateAndSetField(i, "发动机型号", excelVo.getEngineType(), engineTypeMap, msgSub, false, excelVo::setEngineType);
} validateAndSetField(i, "驱动电机型号", excelVo.getDriveMotorModel(), driveMotorModelMap, msgSub, false, excelVo::setDriveMotorModel);
// 校验动力类型 validateAndSetField(i, "动力电池型号", excelVo.getPowerBatteryModel(), powerBatteryModelMap, msgSub, false, excelVo::setPowerBatteryModel);
if (StringUtils.isBlank(excelVo.getPowerType())) { validateAndSetField(i, "变速器型号", excelVo.getTransmissionModel(), transmissionModelMap, msgSub, true, excelVo::setTransmissionModel);
msgSub.append(getErrorMsg(i, "动力类型不能为空;")); validateAndSetField(i, "车身形式", excelVo.getBodyType(), bodyTypeMap, msgSub, true, excelVo::setBodyType);
} validateAndSetField(i, "驱动形式", excelVo.getDrivingType(), drivingTypeMap, msgSub, true, excelVo::setDrivingType);
// 校验发动机型号 validateAndSetField(i, "驱动轴数量", excelVo.getDrivingShaftsNumber(), drivingShaftsNumberMap, msgSub, true, excelVo::setDrivingShaftsNumber);
if (StringUtils.isNotBlank(excelVo.getEngineType())) { validateAndSetField(i, "转向型式", excelVo.getSteeringType(), steeringTypeMap, msgSub, true, excelVo::setSteeringType);
} validateAndSetField(i, "座位数量", excelVo.getSeatsNumber(), seatsNumberMap, msgSub, true, excelVo::setSeatsNumber);
// 校验驱动电机型号 validateAndSetField(i, "发动机工作原理", excelVo.getEngineWorkingPrinciple(), engineWorkingPrincipleMap, msgSub, true, excelVo::setEngineWorkingPrinciple);
if (StringUtils.isNotBlank(excelVo.getDriveMotorModel())) { validateAndSetField(i, "燃料类型", excelVo.getFuelType(), fuelTypeMap, msgSub, true, excelVo::setFuelType);
} validateAndSetField(i, "发动机排量(L", excelVo.getEngineCapacity(), engineCapacityMap, msgSub, false, excelVo::setEngineCapacity);
// 校验动力电池型号 validateAndSetField(i, "排放水平", excelVo.getEmissionLevel(), emissionLevelMap, msgSub, false, excelVo::setEmissionLevel);
if (StringUtils.isNotBlank(excelVo.getPowerBatteryModel())) { validateAndSetField(i, "储能装置种类", excelVo.getEnergyStorageDevices(), batteryTypeMap, msgSub, false, excelVo::setEnergyStorageDevices);
} validateAndSetField(i, "变速器型式", excelVo.getTransmissionType(), transmissionTypeMap, msgSub, true, excelVo::setTransmissionType);
// 校验变速器型号 validateAndSetField(i, "变速器档位数", excelVo.getTransmissionGearNumber(), transmissionGearNumberMap, msgSub, true, excelVo::setTransmissionGearNumber);
if (StringUtils.isBlank(excelVo.getTransmissionModel())) { validateAndSetField(i, "变速器是否带手动模式", excelVo.getTransmissionIsHasManual(), ynMap, msgSub, true, excelVo::setTransmissionIsHasManual);
msgSub.append(getErrorMsg(i, "变速器型号不能为空;")); validateAndSetField(i, "前排正面气囊", excelVo.getFrontFrontAirbag(), frontFrontAirbagMap, msgSub, true, excelVo::setFrontFrontAirbag);
} validateAndSetField(i, "前排座椅侧气囊", excelVo.getFrontSeatSideAirbags(), frontSeatSideAirbagsMap, msgSub, true, excelVo::setFrontSeatSideAirbags);
// 校验车身形式 validateAndSetField(i, "销售区域", excelVo.getSalesArea(), salesAreaMap, msgSub, true, excelVo::setSalesArea);
if (StringUtils.isBlank(excelVo.getBodyType())) { validateAndSetField(i, "品牌", excelVo.getBrand(), brandMap, msgSub, true, excelVo::setBrand);
msgSub.append(getErrorMsg(i, "车身形式不能为空;")); validateField(i, "能耗(L/100km or kwh/100km)", excelVo.getEnergyConsumption(), msgSub, true, 50);
} validateField(i, "额定转速(rpm)", excelVo.getRatedSpeed(), msgSub, false, 50);
// 校验驱动形式 validateField(i, "发动机最大净功率(kw)", excelVo.getEngineMaxPower(), msgSub, false, 50);
if (StringUtils.isBlank(excelVo.getDrivingType())) { validateField(i, "驱动电机峰值功率(kw)", excelVo.getDriveMotorPeakPower(), msgSub, false, 50);
msgSub.append(getErrorMsg(i, "驱动形式不能为空;")); validateField(i, "技术允许最大满载质量(Kg)", excelVo.getAllowedMaxFullLoad(), msgSub, true, 50);
} validateField(i, "车辆外廓尺寸(长x宽x高)", excelVo.getCarOutSize(), msgSub, true, 50);
// 校验驱动轴数量
if (StringUtils.isBlank(excelVo.getDrivingShaftsNumber())) {
msgSub.append(getErrorMsg(i, "驱动轴数量不能为空;"));
}
// 校验转向型式
if (StringUtils.isBlank(excelVo.getSteeringType())) {
msgSub.append(getErrorMsg(i, "转向型式不能为空;"));
}
// 校验座位数量
if (StringUtils.isBlank(excelVo.getSeatsNumber())) {
msgSub.append(getErrorMsg(i, "座位数量不能为空;"));
}
// 校验技术允许最大满载质量(Kg)
if (StringUtils.isBlank(excelVo.getAllowedMaxFullLoad())) {
msgSub.append(getErrorMsg(i, "技术允许最大满载质量(Kg)不能为空;"));
}else if (excelVo.getAllowedMaxFullLoad().length() > 50) {
msgSub.append(getErrorMsg(i, "技术允许最大满载质量(Kg)字符长度不能超过50;"));
}
// 校验车辆外廓尺寸(长x宽X高)
if (StringUtils.isBlank(excelVo.getCarOutSize())) {
msgSub.append(getErrorMsg(i, "校验车辆外廓尺寸(长x宽X高)不能为空;"));
}else if (excelVo.getCarOutSize().length() > 50) {
msgSub.append(getErrorMsg(i, "校验车辆外廓尺寸(长x宽X高)字符长度不能超过50;"));
}
// 校验发动机工作原理
if (StringUtils.isBlank(excelVo.getEngineWorkingPrinciple())) {
msgSub.append(getErrorMsg(i, "发动机工作原理不能为空;"));
}
// 校验燃料类型
if (StringUtils.isBlank(excelVo.getFuelType())) {
msgSub.append(getErrorMsg(i, "燃料类型不能为空;"));
}
// 校验发动机排量(L
if (StringUtils.isNotBlank(excelVo.getEngineCapacity())) {
}
// 校验额定转速(rpm
if (StringUtils.isNotBlank(excelVo.getRatedSpeed()) && excelVo.getRatedSpeed().length() > 50) {
msgSub.append(getErrorMsg(i, "额定转速(rpm)字符长度不能超过50;"));
}
// 校验发动机最大净功率(kW
if (StringUtils.isNotBlank(excelVo.getEngineMaxPower()) && excelVo.getEngineMaxPower().length() > 50) {
msgSub.append(getErrorMsg(i, "发动机最大净功率(kw)字符长度不能超过50;"));
}
// 校验驱动电机峰值功率(kW
if (StringUtils.isNotBlank(excelVo.getDriveMotorPeakPower()) && excelVo.getDriveMotorPeakPower().length() > 50) {
msgSub.append(getErrorMsg(i, "发动机最大净功率(kw)字符长度不能超过50;"));
}
// 校验排放水平
if (StringUtils.isNotBlank(excelVo.getEmissionLevel())) {
}
// 校验能耗(L/100km or kwh/100km
if (StringUtils.isBlank(excelVo.getEnergyConsumption())) {
msgSub.append(getErrorMsg(i, "能耗(L/100km or kwh/100km)不能为空;"));
}
// 校验储能装置种类
if (StringUtils.isNotBlank(excelVo.getEnergyStorageDevices())) {
}
// 校验变速器型式
if (StringUtils.isBlank(excelVo.getTransmissionType())) {
msgSub.append(getErrorMsg(i, "变速器型式不能为空;"));
}
// 校验变速器档位数
if (StringUtils.isBlank(excelVo.getTransmissionGearNumber())) {
msgSub.append(getErrorMsg(i, "变速器档位数不能为空;"));
}
// 校验变速器是否带手动模式
if (StringUtils.isBlank(excelVo.getTransmissionIsHasManual())) {
msgSub.append(getErrorMsg(i, "变速器是否带手动模式不能为空;"));
}
// 校验前排正面气囊
if (StringUtils.isBlank(excelVo.getFrontFrontAirbag())) {
msgSub.append(getErrorMsg(i, "前排正面气囊不能为空;"));
}
// 校验前排座椅侧气囊
if (StringUtils.isBlank(excelVo.getFrontSeatSideAirbags())) {
msgSub.append(getErrorMsg(i, "前排座椅侧气囊不能为空;"));
}
//校验销售区域
if (StringUtils.isBlank(excelVo.getSalesArea())) {
msgSub.append(getErrorMsg(i, "前销售区域不能为空;"));
}
// 校验品牌
if (StringUtils.isBlank(excelVo.getBrand())) {
msgSub.append(getErrorMsg(i, "品牌不能为空;"));
}
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append(NEWLINE_CHARACTER); msg.append(msgSub).append(NEWLINE_CHARACTER);
} }
@@ -577,6 +522,39 @@ public class ProcessVehicleInternationalReleaseServiceImpl extends ServiceImpl<P
return msg; return msg;
} }
private void validateField(int index, String fieldName, String fieldValue, StringBuilder msgSub, boolean isRequired, int maxLength) {
if (isRequired && StringUtils.isBlank(fieldValue)) {
msgSub.append(getErrorMsg(index, fieldName + "不能为空,"));
} else if (fieldValue.length() > maxLength) {
msgSub.append(getErrorMsg(index, fieldName + "字符长度不能超过" + maxLength + ","));
}
}
private Map<String, String> getDictMap(String dictCode) {
List<DictModel> dictList = sysDictService.getDictItems(dictCode);
return dictList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue));
}
private void validateAndSetField(int index, String fieldName, String fieldValue, Map<String, String> map,
StringBuilder msgSub, boolean isRequired, Consumer<String> setter) {
// 校验是否必填
if (StringUtils.isBlank(fieldValue)) {
if (isRequired) {
msgSub.append(getErrorMsg(index, fieldName + "不能为空,"));
}
} else {
// 如果字段有值,检查是否存在于映射中
String mappedValue = map.get(fieldValue);
if (StringUtils.isBlank(mappedValue)) {
msgSub.append(getErrorMsg(index, fieldName + "不存在,"));
} else {
// 如果存在,调用setter进行设置
setter.accept(mappedValue);
}
}
}
// 校验表头 // 校验表头
private void excelHeadVerify(Class<?> clazz, MultipartFile file) { private void excelHeadVerify(Class<?> clazz, MultipartFile file) {
try { try {
@@ -8,6 +8,7 @@ import com.jero.common.aspect.annotation.Translation;
import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo;
import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary;
import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService; import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@@ -22,6 +23,7 @@ import javax.servlet.http.HttpServletRequest;
* @author sz * @author sz
* @since 2024-09-29 * @since 2024-09-29
*/ */
@Api(tags="国际整车型号及VIN前八位管控库")
@RestController @RestController
@RequestMapping("/laws/internationalVehicle/library") @RequestMapping("/laws/internationalVehicle/library")
public class LawsVehicleInternationalLibraryController { public class LawsVehicleInternationalLibraryController {
@@ -28,6 +28,7 @@ import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -44,6 +45,7 @@ import java.util.stream.Collectors;
* @since 2024-09-29 * @since 2024-09-29
*/ */
@Service @Service
@Transactional(rollbackFor = JeroBootException.class)
public class LawsVehicleInternationalLibraryServiceImpl extends ServiceImpl<LawsVehicleInternationalLibraryMapper, LawsVehicleInternationalLibrary> implements ILawsVehicleInternationalLibraryService { public class LawsVehicleInternationalLibraryServiceImpl extends ServiceImpl<LawsVehicleInternationalLibraryMapper, LawsVehicleInternationalLibrary> implements ILawsVehicleInternationalLibraryService {
@Resource @Resource
@@ -179,24 +179,24 @@ public class LawsClubJoinTeamServiceImpl extends ServiceImpl<LawsClubJoinTeamMap
String fullName = extractFullName(lawsClubJoinTeamExcel.getLeadId()); String fullName = extractFullName(lawsClubJoinTeamExcel.getLeadId());
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, leadName).eq(SysUser::getRealname,fullName),false); SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, leadName).eq(SysUser::getRealname,fullName),false);
if (Objects.isNull(sysUser)) { if (Objects.isNull(sysUser)) {
msgSub.append(getErrorMsg(i, "社团职务担任者不存在;")); msgSub.append(getErrorMsg(i, "社团职务担任者不存在"));
}else { }else {
lawsClubJoinTeamExcel.setLeadId(sysUser.getId()); lawsClubJoinTeamExcel.setLeadId(sysUser.getId());
} }
} }
// 校验入团经费 // 校验入团经费
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getJoinCast()) && lawsClubJoinTeamExcel.getJoinCast().length() > 50) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getJoinCast()) && lawsClubJoinTeamExcel.getJoinCast().length() > 50) {
msgSub.append(getErrorMsg(i, "入团经费长度不能超过50;")); msgSub.append(getErrorMsg(i, "入团经费长度不能超过50"));
} }
// 校验社团简介 // 校验社团简介
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getClubProfile()) && lawsClubJoinTeamExcel.getClubProfile().length() > 500) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getClubProfile()) && lawsClubJoinTeamExcel.getClubProfile().length() > 500) {
msgSub.append(getErrorMsg(i, "社团简介长度不能超过500;")); msgSub.append(getErrorMsg(i, "社团简介长度不能超过500"));
} }
// 校验部门名称 // 校验部门名称
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getDepartId())) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getDepartId())) {
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubJoinTeamExcel.getDepartId())); List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubJoinTeamExcel.getDepartId()));
if (CollectionUtils.isEmpty(sysDepart)) { if (CollectionUtils.isEmpty(sysDepart)) {
msgSub.append(getErrorMsg(i, "部门名称不存在;")); msgSub.append(getErrorMsg(i, "部门名称不存在"));
}else { }else {
lawsClubJoinTeamExcel.setDepartId(sysDepart.get(0).getId()); lawsClubJoinTeamExcel.setDepartId(sysDepart.get(0).getId());
} }
@@ -205,7 +205,7 @@ public class LawsClubJoinTeamServiceImpl extends ServiceImpl<LawsClubJoinTeamMap
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getSpecializedModule())) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getSpecializedModule())) {
String specializedModule = specializedModuleMap.get(lawsClubJoinTeamExcel.getSpecializedModule()); String specializedModule = specializedModuleMap.get(lawsClubJoinTeamExcel.getSpecializedModule());
if (StringUtils.isBlank(specializedModule)) { if (StringUtils.isBlank(specializedModule)) {
msgSub.append(getErrorMsg(i, "专业模块不存在;")); msgSub.append(getErrorMsg(i, "专业模块不存在"));
}else { }else {
lawsClubJoinTeamExcel.setSpecializedModule(specializedModule); lawsClubJoinTeamExcel.setSpecializedModule(specializedModule);
} }
@@ -216,22 +216,22 @@ public class LawsClubJoinTeamServiceImpl extends ServiceImpl<LawsClubJoinTeamMap
String fullName = extractFullName(lawsClubJoinTeamExcel.getProposerId()); String fullName = extractFullName(lawsClubJoinTeamExcel.getProposerId());
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, proposerName).eq(SysUser::getRealname,fullName),false); SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, proposerName).eq(SysUser::getRealname,fullName),false);
if (Objects.isNull(sysUser)) { if (Objects.isNull(sysUser)) {
msgSub.append(getErrorMsg(i, "申请人不存在;")); msgSub.append(getErrorMsg(i, "申请人不存在"));
}else { }else {
lawsClubJoinTeamExcel.setProposerId(sysUser.getId()); lawsClubJoinTeamExcel.setProposerId(sysUser.getId());
} }
} }
// 校验秘书处 // 校验秘书处
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getSecretariat()) && lawsClubJoinTeamExcel.getSecretariat().length() > 50) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getSecretariat()) && lawsClubJoinTeamExcel.getSecretariat().length() > 50) {
msgSub.append(getErrorMsg(i, "秘书处长度不能超过50;")); msgSub.append(getErrorMsg(i, "秘书处长度不能超过50"));
} }
// 校验联系人 // 校验联系人
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getContacts()) && lawsClubJoinTeamExcel.getContacts().length() > 50) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getContacts()) && lawsClubJoinTeamExcel.getContacts().length() > 50) {
msgSub.append(getErrorMsg(i, "联系人长度不能超过50;")); msgSub.append(getErrorMsg(i, "联系人长度不能超过50"));
} }
// 校验备注 // 校验备注
if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getRemark()) && lawsClubJoinTeamExcel.getRemark().length() > 500) { if (StringUtils.isNotBlank(lawsClubJoinTeamExcel.getRemark()) && lawsClubJoinTeamExcel.getRemark().length() > 500) {
msgSub.append(getErrorMsg(i, "备注长度不能超过500;")); msgSub.append(getErrorMsg(i, "备注长度不能超过500"));
} }
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append("</br>"); msg.append(msgSub).append("</br>");
@@ -256,7 +256,7 @@ public class LawsClubJoinTeamServiceImpl extends ServiceImpl<LawsClubJoinTeamMap
// 错误消息格式化 // 错误消息格式化
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 4) + "" + errorMsg; return "" + (rowIndex + 4) + "" + errorMsg + ",";
} }
public String extractEmployeeId(String input) { public String extractEmployeeId(String input) {
@@ -232,30 +232,30 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
StringBuilder msgSub = new StringBuilder(); StringBuilder msgSub = new StringBuilder();
// 校验会议名称 // 校验会议名称
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingName()) && lawsClubMeetingExcel.getMeetingName().length() > 50) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingName()) && lawsClubMeetingExcel.getMeetingName().length() > 50) {
msgSub.append(getErrorMsg(i, "会议名称长度不能超过50;")); msgSub.append(getErrorMsg(i, "会议名称长度不能超过50"));
} }
// 校验会议日期 // 校验会议日期
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingDate())) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingDate())) {
try { try {
LocalDate.parse(lawsClubMeetingExcel.getMeetingDate()); LocalDate.parse(lawsClubMeetingExcel.getMeetingDate());
} catch (Exception e) { } catch (Exception e) {
msgSub.append(getErrorMsg(i, "会议日期格式不正确;")); msgSub.append(getErrorMsg(i, "会议日期格式不正确"));
} }
} }
// 校验会议费用 // 校验会议费用
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingCost()) && lawsClubMeetingExcel.getMeetingCost().length() > 50) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingCost()) && lawsClubMeetingExcel.getMeetingCost().length() > 50) {
msgSub.append(getErrorMsg(i, "会议费用长度不能超过50;")); msgSub.append(getErrorMsg(i, "会议费用长度不能超过50"));
} }
// 校验线下/线上地点 // 校验线下/线上地点
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingPlace()) && lawsClubMeetingExcel.getMeetingPlace().length() > 50) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingPlace()) && lawsClubMeetingExcel.getMeetingPlace().length() > 50) {
msgSub.append(getErrorMsg(i, "线下/线上地点长度不能超过50;")); msgSub.append(getErrorMsg(i, "线下/线上地点长度不能超过50"));
} }
// 校验计划完成日期 // 校验计划完成日期
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getPlanCompletionDate())) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getPlanCompletionDate())) {
try { try {
LocalDate.parse(lawsClubMeetingExcel.getPlanCompletionDate()); LocalDate.parse(lawsClubMeetingExcel.getPlanCompletionDate());
} catch (Exception e) { } catch (Exception e) {
msgSub.append(getErrorMsg(i, "计划完成日期格式不正确;")); msgSub.append(getErrorMsg(i, "计划完成日期格式不正确"));
} }
} }
// 校验通知人 // 校验通知人
@@ -264,7 +264,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
String notifierId = extractEmployeeId(lawsClubMeetingExcel.getNotifierId()); String notifierId = extractEmployeeId(lawsClubMeetingExcel.getNotifierId());
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, notifierId).eq(SysUser::getRealname,fullName),false); SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, notifierId).eq(SysUser::getRealname,fullName),false);
if (Objects.isNull(sysUser)) { if (Objects.isNull(sysUser)) {
msgSub.append(getErrorMsg(i, "通知人不存在;")); msgSub.append(getErrorMsg(i, "通知人不存在"));
}else { }else {
lawsClubMeetingExcel.setNotifierId(sysUser.getId()); lawsClubMeetingExcel.setNotifierId(sysUser.getId());
} }
@@ -273,7 +273,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getNotifyDepartId())) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getNotifyDepartId())) {
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubMeetingExcel.getNotifyDepartId())); List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubMeetingExcel.getNotifyDepartId()));
if (CollectionUtils.isEmpty(sysDepart)) { if (CollectionUtils.isEmpty(sysDepart)) {
msgSub.append(getErrorMsg(i, "通知部门不存在;")); msgSub.append(getErrorMsg(i, "通知部门不存在"));
}else { }else {
lawsClubMeetingExcel.setNotifyDepartId((sysDepart.get(0).getId())); lawsClubMeetingExcel.setNotifyDepartId((sysDepart.get(0).getId()));
} }
@@ -282,7 +282,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getInformSpecializedModule())) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getInformSpecializedModule())) {
String informSpecializedModule = specializedModuleMap.get(lawsClubMeetingExcel.getInformSpecializedModule()); String informSpecializedModule = specializedModuleMap.get(lawsClubMeetingExcel.getInformSpecializedModule());
if (StringUtils.isBlank(informSpecializedModule)) { if (StringUtils.isBlank(informSpecializedModule)) {
msgSub.append(getErrorMsg(i, "通知部门专业模块不存在;")); msgSub.append(getErrorMsg(i, "通知部门专业模块不存在"));
}else { }else {
lawsClubMeetingExcel.setInformSpecializedModule(informSpecializedModule); lawsClubMeetingExcel.setInformSpecializedModule(informSpecializedModule);
} }
@@ -291,18 +291,18 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getIsPublicize())) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getIsPublicize())) {
String isPublicize = ynMap.get(lawsClubMeetingExcel.getIsPublicize()); String isPublicize = ynMap.get(lawsClubMeetingExcel.getIsPublicize());
if (StringUtils.isBlank(isPublicize)) { if (StringUtils.isBlank(isPublicize)) {
msgSub.append(getErrorMsg(i, "是否宣贯请填写是或否;")); msgSub.append(getErrorMsg(i, "是否宣贯请填写是或否"));
}else { }else {
lawsClubMeetingExcel.setIsPublicize(isPublicize); lawsClubMeetingExcel.setIsPublicize(isPublicize);
} }
} }
// 校验会议组织人 // 校验会议组织人
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingOrganizer()) && lawsClubMeetingExcel.getMeetingOrganizer().length() > 50) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingOrganizer()) && lawsClubMeetingExcel.getMeetingOrganizer().length() > 50) {
msgSub.append(getErrorMsg(i, "会议组织人长度不能超过50;")); msgSub.append(getErrorMsg(i, "会议组织人长度不能超过50"));
} }
// 校验会议内容 // 校验会议内容
if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingContent()) && lawsClubMeetingExcel.getMeetingContent().length() > 500) { if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingContent()) && lawsClubMeetingExcel.getMeetingContent().length() > 500) {
msgSub.append(getErrorMsg(i, "会议内容长度不能超过500;")); msgSub.append(getErrorMsg(i, "会议内容长度不能超过500"));
} }
List<LawsClubMeetingMemberExcel> meetingMemberList = lawsClubMeetingExcel.getMeetingMemberList(); List<LawsClubMeetingMemberExcel> meetingMemberList = lawsClubMeetingExcel.getMeetingMemberList();
// 校验参会人员的信息 // 校验参会人员的信息
@@ -313,7 +313,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
String memberId = extractEmployeeId(lawsClubMeetingMemberExcel.getMemberId()); String memberId = extractEmployeeId(lawsClubMeetingMemberExcel.getMemberId());
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, memberId).eq(SysUser::getRealname, fullName),false); SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, memberId).eq(SysUser::getRealname, fullName),false);
if (Objects.isNull(sysUser)) { if (Objects.isNull(sysUser)) {
msgSub.append(getErrorMsg(i, "参会人员:" + lawsClubMeetingMemberExcel.getMemberId() + "不存在;")); msgSub.append(getErrorMsg(i, "参会人员:" + lawsClubMeetingMemberExcel.getMemberId() + "不存在"));
}else { }else {
lawsClubMeetingMemberExcel.setMemberId(sysUser.getId()); lawsClubMeetingMemberExcel.setMemberId(sysUser.getId());
} }
@@ -322,7 +322,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getDepartId())) { if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getDepartId())) {
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubMeetingMemberExcel.getDepartId())); List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubMeetingMemberExcel.getDepartId()));
if (CollectionUtils.isEmpty(sysDepart)) { if (CollectionUtils.isEmpty(sysDepart)) {
msgSub.append(getErrorMsg(i, "参会部门:" + lawsClubMeetingMemberExcel.getDepartId() + "不存在;")); msgSub.append(getErrorMsg(i, "参会部门:" + lawsClubMeetingMemberExcel.getDepartId() + "不存在"));
}else { }else {
lawsClubMeetingMemberExcel.setDepartId((sysDepart.get(0).getId())); lawsClubMeetingMemberExcel.setDepartId((sysDepart.get(0).getId()));
} }
@@ -331,7 +331,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getMeetingSpecializedModule())) { if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getMeetingSpecializedModule())) {
String meetingSpecializedModule = specializedModuleMap.get(lawsClubMeetingMemberExcel.getMeetingSpecializedModule()); String meetingSpecializedModule = specializedModuleMap.get(lawsClubMeetingMemberExcel.getMeetingSpecializedModule());
if (StringUtils.isBlank(meetingSpecializedModule)) { if (StringUtils.isBlank(meetingSpecializedModule)) {
msgSub.append(getErrorMsg(i, "参会部门专业模块:" + lawsClubMeetingMemberExcel.getMeetingSpecializedModule() + "不存在;")); msgSub.append(getErrorMsg(i, "参会部门专业模块:" + lawsClubMeetingMemberExcel.getMeetingSpecializedModule() + "不存在"));
}else { }else {
lawsClubMeetingMemberExcel.setMeetingSpecializedModule(meetingSpecializedModule); lawsClubMeetingMemberExcel.setMeetingSpecializedModule(meetingSpecializedModule);
} }
@@ -344,7 +344,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
} }
File file = unZipFileMap.get(fileName); File file = unZipFileMap.get(fileName);
if (Objects.isNull(file)) { if (Objects.isNull(file)) {
msgSub.append(getErrorMsg(i, "参会报告:" + lawsClubMeetingMemberExcel.getMeetingFileId() + "在压缩包内不存在;")); msgSub.append(getErrorMsg(i, "参会报告:" + lawsClubMeetingMemberExcel.getMeetingFileId() + "在压缩包内不存在"));
}else { }else {
FileInputStream input = new FileInputStream(file); FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "application/octet-stream", input); MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "application/octet-stream", input);
@@ -366,7 +366,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl<LawsClubMeetingMappe
// 错误消息格式化 // 错误消息格式化
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 4) + "" + errorMsg; return "" + (rowIndex + 4) + "" + errorMsg + ",";
} }
public String extractEmployeeId(String input) { public String extractEmployeeId(String input) {
@@ -140,19 +140,19 @@ public class LawsClubPaymentServiceImpl extends ServiceImpl<LawsClubPaymentMappe
StringBuilder msgSub = new StringBuilder(); StringBuilder msgSub = new StringBuilder();
// 校验缴费金额 // 校验缴费金额
if (StringUtils.isNotBlank(lawsClubPaymentExcel.getPaymentAmount()) && lawsClubPaymentExcel.getPaymentAmount().length() > 50) { if (StringUtils.isNotBlank(lawsClubPaymentExcel.getPaymentAmount()) && lawsClubPaymentExcel.getPaymentAmount().length() > 50) {
msgSub.append(getErrorMsg(i, "缴费金额长度不能超过50;")); msgSub.append(getErrorMsg(i, "缴费金额长度不能超过50"));
} }
// 校验缴费日期格 // 校验缴费日期格
if (StringUtils.isNotBlank(lawsClubPaymentExcel.getPaymentTime())) { if (StringUtils.isNotBlank(lawsClubPaymentExcel.getPaymentTime())) {
try { try {
LocalDate.parse(lawsClubPaymentExcel.getPaymentTime()); LocalDate.parse(lawsClubPaymentExcel.getPaymentTime());
} catch (Exception e) { } catch (Exception e) {
msgSub.append(getErrorMsg(i, "缴费日期格式不正确;")); msgSub.append(getErrorMsg(i, "缴费日期格式不正确"));
} }
} }
// 校验备注 // 校验备注
if (StringUtils.isNotBlank(lawsClubPaymentExcel.getRemark()) && lawsClubPaymentExcel.getRemark().length() > 500) { if (StringUtils.isNotBlank(lawsClubPaymentExcel.getRemark()) && lawsClubPaymentExcel.getRemark().length() > 500) {
msgSub.append(getErrorMsg(i, "备注长度不能超过500;")); msgSub.append(getErrorMsg(i, "备注长度不能超过500"));
} }
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append("</br>"); msg.append(msgSub).append("</br>");
@@ -186,7 +186,7 @@ public class LawsClubPaymentServiceImpl extends ServiceImpl<LawsClubPaymentMappe
// 错误消息格式化 // 错误消息格式化
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 4) + "" + errorMsg; return "" + (rowIndex + 4) + "" + errorMsg + ",";
} }
private void excelHeadVerify(MultipartFile file, Class<LawsClubPaymentExcel> clazz, int titleRows, int i) { private void excelHeadVerify(MultipartFile file, Class<LawsClubPaymentExcel> clazz, int titleRows, int i) {
@@ -171,18 +171,18 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
StringBuilder msgSub = new StringBuilder(); StringBuilder msgSub = new StringBuilder();
// 校验名称 // 校验名称
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getResearchName()) && lawsClubResearchInformationExcel.getResearchName().length() > 50) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getResearchName()) && lawsClubResearchInformationExcel.getResearchName().length() > 50) {
msgSub.append(getErrorMsg(i, "名称长度不能超过50;")); msgSub.append(getErrorMsg(i, "名称长度不能超过50"));
} }
// 校验内容 // 校验内容
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getResearchContent()) && lawsClubResearchInformationExcel.getResearchContent().length() > 500) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getResearchContent()) && lawsClubResearchInformationExcel.getResearchContent().length() > 500) {
msgSub.append(getErrorMsg(i, "内容长度不能超过500;")); msgSub.append(getErrorMsg(i, "内容长度不能超过500"));
} }
// 校验接收日期 // 校验接收日期
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getReceiveDate())) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getReceiveDate())) {
try { try {
LocalDate.parse(lawsClubResearchInformationExcel.getReceiveDate()); LocalDate.parse(lawsClubResearchInformationExcel.getReceiveDate());
} catch (Exception e) { } catch (Exception e) {
msgSub.append(getErrorMsg(i, "接收日期格式不正确;")); msgSub.append(getErrorMsg(i, "接收日期格式不正确"));
} }
} }
// 校验截止日期 // 校验截止日期
@@ -190,7 +190,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
try { try {
LocalDate.parse(lawsClubResearchInformationExcel.getDeadlineDate()); LocalDate.parse(lawsClubResearchInformationExcel.getDeadlineDate());
} catch (Exception e) { } catch (Exception e) {
msgSub.append(getErrorMsg(i, "截止日期格式不正确;")); msgSub.append(getErrorMsg(i, "截止日期格式不正确"));
} }
} }
// 校验专业接口人 // 校验专业接口人
@@ -199,7 +199,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
String fullName = extractFullName(lawsClubResearchInformationExcel.getSpecializedInterfacePerson()); String fullName = extractFullName(lawsClubResearchInformationExcel.getSpecializedInterfacePerson());
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, specializedInterfacePerson).eq(SysUser::getRealname,fullName),false); SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, specializedInterfacePerson).eq(SysUser::getRealname,fullName),false);
if (Objects.isNull(sysUser)) { if (Objects.isNull(sysUser)) {
msgSub.append(getErrorMsg(i, "专业接口人不存在;")); msgSub.append(getErrorMsg(i, "专业接口人不存在"));
}else { }else {
lawsClubResearchInformationExcel.setSpecializedInterfacePerson(sysUser.getId()); lawsClubResearchInformationExcel.setSpecializedInterfacePerson(sysUser.getId());
} }
@@ -208,7 +208,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getSpecializedModule())) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getSpecializedModule())) {
String specializedModule = specializedModuleMap.get(lawsClubResearchInformationExcel.getSpecializedModule()); String specializedModule = specializedModuleMap.get(lawsClubResearchInformationExcel.getSpecializedModule());
if (StringUtils.isBlank(specializedModule)) { if (StringUtils.isBlank(specializedModule)) {
msgSub.append(getErrorMsg(i, "专业模块不存在;")); msgSub.append(getErrorMsg(i, "专业模块不存在"));
}else { }else {
lawsClubResearchInformationExcel.setSpecializedModule(specializedModule); lawsClubResearchInformationExcel.setSpecializedModule(specializedModule);
} }
@@ -219,7 +219,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
String feedbackPerson = extractEmployeeId(lawsClubResearchInformationExcel.getFeedbackPerson()); String feedbackPerson = extractEmployeeId(lawsClubResearchInformationExcel.getFeedbackPerson());
SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, feedbackPerson).eq(SysUser::getRealname,fullName),false); SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, feedbackPerson).eq(SysUser::getRealname,fullName),false);
if (Objects.isNull(sysUser)) { if (Objects.isNull(sysUser)) {
msgSub.append(getErrorMsg(i, "反馈人不存在;")); msgSub.append(getErrorMsg(i, "反馈人不存在"));
}else { }else {
lawsClubResearchInformationExcel.setFeedbackPerson(sysUser.getId()); lawsClubResearchInformationExcel.setFeedbackPerson(sysUser.getId());
} }
@@ -228,7 +228,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackDepart())) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackDepart())) {
List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubResearchInformationExcel.getFeedbackDepart())); List<SysDepart> sysDepart = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getDepartName, lawsClubResearchInformationExcel.getFeedbackDepart()));
if (CollectionUtils.isEmpty(sysDepart)) { if (CollectionUtils.isEmpty(sysDepart)) {
msgSub.append(getErrorMsg(i, "反馈部门不存在;")); msgSub.append(getErrorMsg(i, "反馈部门不存在"));
}else { }else {
lawsClubResearchInformationExcel.setFeedbackDepart(sysDepart.get(0).getId()); lawsClubResearchInformationExcel.setFeedbackDepart(sysDepart.get(0).getId());
} }
@@ -237,28 +237,28 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackSpecializedModule())) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackSpecializedModule())) {
String feedbackSpecializedModule = specializedModuleMap.get(lawsClubResearchInformationExcel.getFeedbackSpecializedModule()); String feedbackSpecializedModule = specializedModuleMap.get(lawsClubResearchInformationExcel.getFeedbackSpecializedModule());
if (StringUtils.isBlank(feedbackSpecializedModule)) { if (StringUtils.isBlank(feedbackSpecializedModule)) {
msgSub.append(getErrorMsg(i, "反馈部门专业模块不存在;")); msgSub.append(getErrorMsg(i, "反馈部门专业模块不存在"));
}else { }else {
lawsClubResearchInformationExcel.setFeedbackSpecializedModule(feedbackSpecializedModule); lawsClubResearchInformationExcel.setFeedbackSpecializedModule(feedbackSpecializedModule);
} }
} }
// 校验反馈情况 // 校验反馈情况
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackSituation()) && lawsClubResearchInformationExcel.getFeedbackSituation().length() > 500) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getFeedbackSituation()) && lawsClubResearchInformationExcel.getFeedbackSituation().length() > 500) {
msgSub.append(getErrorMsg(i, "反馈情况长度不能超过500;")); msgSub.append(getErrorMsg(i, "反馈情况长度不能超过500"));
} }
// 校验盖章流程完成情况 // 校验盖章流程完成情况
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getSealSituation()) && lawsClubResearchInformationExcel.getSealSituation().length() > 50) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getSealSituation()) && lawsClubResearchInformationExcel.getSealSituation().length() > 50) {
msgSub.append(getErrorMsg(i, "盖章流程完成情况长度不能超过50;")); msgSub.append(getErrorMsg(i, "盖章流程完成情况长度不能超过50"));
} }
// 校验所属设社团 // 校验所属设社团
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getClubName()) && lawsClubResearchInformationExcel.getClubName().length() > 50) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getClubName()) && lawsClubResearchInformationExcel.getClubName().length() > 50) {
msgSub.append(getErrorMsg(i, "所属设社团长度不能超过50;")); msgSub.append(getErrorMsg(i, "所属设社团长度不能超过50"));
} }
// 校验任务来源 // 校验任务来源
if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getTaskSource())) { if (StringUtils.isNotBlank(lawsClubResearchInformationExcel.getTaskSource())) {
String taskSource = clubTaskSourceMap.get(lawsClubResearchInformationExcel.getTaskSource()); String taskSource = clubTaskSourceMap.get(lawsClubResearchInformationExcel.getTaskSource());
if (StringUtils.isBlank(taskSource)) { if (StringUtils.isBlank(taskSource)) {
msgSub.append(getErrorMsg(i, "任务来源不存在;")); msgSub.append(getErrorMsg(i, "任务来源不存在"));
}else { }else {
lawsClubResearchInformationExcel.setTaskSource(taskSource); lawsClubResearchInformationExcel.setTaskSource(taskSource);
} }
@@ -272,7 +272,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl<LawsClub
// 错误消息格式化 // 错误消息格式化
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 4) + "" + errorMsg; return "" + (rowIndex + 4) + "" + errorMsg + ",";
} }
public String extractEmployeeId(String input) { public String extractEmployeeId(String input) {
@@ -854,50 +854,50 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
// 校验上级节点 // 校验上级节点
String parentId = lawsClubExcel.getParentId(); String parentId = lawsClubExcel.getParentId();
if (StringUtils.isBlank(parentId)) { if (StringUtils.isBlank(parentId)) {
msgSub.append(getErrorMsg(i, "上级节点不能为空;")); msgSub.append(getErrorMsg(i, "上级节点不能为空"));
} else { } else {
LawsClub club = getOne(new LambdaQueryWrapper<LawsClub>().eq(LawsClub::getClubName, parentId)); LawsClub club = getOne(new LambdaQueryWrapper<LawsClub>().eq(LawsClub::getClubName, parentId));
if (club == null) { if (club == null) {
msgSub.append(getErrorMsg(i, "上级节点不存在,请重新输入;")); msgSub.append(getErrorMsg(i, "上级节点不存在,请重新输入"));
} else { } else {
lawsClubExcel.setParentId(club.getId()); lawsClubExcel.setParentId(club.getId());
} }
} }
// 校验节点类型 // 校验节点类型
if (StringUtils.isBlank(lawsClubExcel.getNodeType())) { if (StringUtils.isBlank(lawsClubExcel.getNodeType())) {
msgSub.append(getErrorMsg(i, "节点类型不能为空;")); msgSub.append(getErrorMsg(i, "节点类型不能为空"));
} else if (lawsClubExcel.getNodeType().length() > 50){ } else if (lawsClubExcel.getNodeType().length() > 50){
msgSub.append(getErrorMsg(i, "节点类型长度不能超过50;")); msgSub.append(getErrorMsg(i, "节点类型长度不能超过50"));
} }
// 校验社团名称 // 校验社团名称
if (StringUtils.isBlank(lawsClubExcel.getClubName())) { if (StringUtils.isBlank(lawsClubExcel.getClubName())) {
msgSub.append(getErrorMsg(i, "社团名称不能为空;")); msgSub.append(getErrorMsg(i, "社团名称不能为空"));
}else if (lawsClubExcel.getClubName().length() > 50) { }else if (lawsClubExcel.getClubName().length() > 50) {
msgSub.append(getErrorMsg(i, "社团名称长度不能超过50;")); msgSub.append(getErrorMsg(i, "社团名称长度不能超过50"));
}else { }else {
LawsClub lawsClub = getOne(new LambdaQueryWrapper<LawsClub>().eq(LawsClub::getClubName, lawsClubExcel.getClubName())); LawsClub lawsClub = getOne(new LambdaQueryWrapper<LawsClub>().eq(LawsClub::getClubName, lawsClubExcel.getClubName()));
if (!Objects.isNull(lawsClub)) { if (!Objects.isNull(lawsClub)) {
msgSub.append(getErrorMsg(i, "社团名称已存在;")); msgSub.append(getErrorMsg(i, "社团名称已存在"));
} }
} }
// 校验社团地址 // 校验社团地址
if (StringUtils.isNotBlank(lawsClubExcel.getClubAddress()) && lawsClubExcel.getClubAddress().length() > 50) { if (StringUtils.isNotBlank(lawsClubExcel.getClubAddress()) && lawsClubExcel.getClubAddress().length() > 50) {
msgSub.append(getErrorMsg(i, "社团地址长度不能超过50;")); msgSub.append(getErrorMsg(i, "社团地址长度不能超过50"));
} }
// 校验社团联系人 // 校验社团联系人
if (StringUtils.isNotBlank(lawsClubExcel.getClubContact()) && lawsClubExcel.getClubContact().length() > 50) { if (StringUtils.isNotBlank(lawsClubExcel.getClubContact()) && lawsClubExcel.getClubContact().length() > 50) {
msgSub.append(getErrorMsg(i, "社团联系人长度不能超过50;")); msgSub.append(getErrorMsg(i, "社团联系人长度不能超过50"));
} }
// 校验联系电话 // 校验联系电话
String contactNumber = lawsClubExcel.getContactNumber(); String contactNumber = lawsClubExcel.getContactNumber();
if (StringUtils.isNotBlank(contactNumber) && !contactNumber.matches("^(?:(0\\d{2,3}-)?\\d{7,8}|1[3-9]\\d{9})$")) { if (StringUtils.isNotBlank(contactNumber) && !contactNumber.matches("^(?:(0\\d{2,3}-)?\\d{7,8}|1[3-9]\\d{9})$")) {
msgSub.append(getErrorMsg(i, "联系电话格式不正确;")); msgSub.append(getErrorMsg(i, "联系电话格式不正确"));
} else { } else {
lawsClubExcel.setContactNumber(PasswordUtil.encrypt(contactNumber)); lawsClubExcel.setContactNumber(PasswordUtil.encrypt(contactNumber));
} }
// 校验编号 // 校验编号
if (StringUtils.isNotBlank(lawsClubExcel.getNumber()) && lawsClubExcel.getNumber().length() > 50) { if (StringUtils.isNotBlank(lawsClubExcel.getNumber()) && lawsClubExcel.getNumber().length() > 50) {
msgSub.append(getErrorMsg(i, "编号长度不能超过50;")); msgSub.append(getErrorMsg(i, "编号长度不能超过50"));
} }
if (msgSub.length() > 0) { if (msgSub.length() > 0) {
msg.append(msgSub).append("</br>"); msg.append(msgSub).append("</br>");
@@ -1022,18 +1022,9 @@ public class LawsClubServiceImpl extends ServiceImpl<LawsClubMapper, LawsClub> i
// 错误消息格式化 // 错误消息格式化
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 4) + "" + errorMsg; return "" + (rowIndex + 4) + "" + errorMsg + ",";
} }
private Map<String, String> getUserRealNameAndUsernameMap(List<String> userIds) {
// 假设这里是根据 leadIds 批量查询用户信息的逻辑
List<SysUser> users = sysUserService.list(new LambdaQueryWrapper<SysUser>().in(SysUser::getId, userIds));
// 将用户信息拼接为 "realname(username)" 形式
return users.stream().collect(Collectors.toMap(
SysUser::getId,
user -> user.getRealname() + "(" + user.getUsername() + ")"
));
}
private void excelHeadVerify(MultipartFile file, Class<LawsClubExcel> clazz, int titleRows, int i) { private void excelHeadVerify(MultipartFile file, Class<LawsClubExcel> clazz, int titleRows, int i) {
try { try {
@@ -207,7 +207,7 @@ public class LawsClubWorkingGroupFileServiceImpl extends ServiceImpl<LawsClubWor
if (StringUtils.isNotBlank(lawsClubWorkingGroupFileExcel.getFileType())) { if (StringUtils.isNotBlank(lawsClubWorkingGroupFileExcel.getFileType())) {
String fileType = fileTypeMap.get(lawsClubWorkingGroupFileExcel.getFileType()); String fileType = fileTypeMap.get(lawsClubWorkingGroupFileExcel.getFileType());
if (StringUtils.isBlank(fileType)) { if (StringUtils.isBlank(fileType)) {
msgSub.append(getErrorMsg(i, "文件类型不存在;")); msgSub.append(getErrorMsg(i, "文件类型不存在"));
}else { }else {
lawsClubWorkingGroupFileExcel.setFileType(fileType); lawsClubWorkingGroupFileExcel.setFileType(fileType);
} }
@@ -220,7 +220,7 @@ public class LawsClubWorkingGroupFileServiceImpl extends ServiceImpl<LawsClubWor
} }
File file = unZipFileMap.get(fileName); File file = unZipFileMap.get(fileName);
if (Objects.isNull(file)) { if (Objects.isNull(file)) {
msgSub.append(getErrorMsg(i, "参会报告:" + lawsClubWorkingGroupFileExcel.getFileId() + "在压缩包内不存在;")); msgSub.append(getErrorMsg(i, "参会报告:" + lawsClubWorkingGroupFileExcel.getFileId() + "在压缩包内不存在"));
}else { }else {
FileInputStream input = new FileInputStream(file); FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "application/octet-stream", input); MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "application/octet-stream", input);
@@ -238,7 +238,7 @@ public class LawsClubWorkingGroupFileServiceImpl extends ServiceImpl<LawsClubWor
// 错误消息格式化 // 错误消息格式化
private String getErrorMsg(int rowIndex, String errorMsg) { private String getErrorMsg(int rowIndex, String errorMsg) {
return "" + (rowIndex + 4) + "" + errorMsg; return "" + (rowIndex + 4) + "" + errorMsg + ",";
} }
private boolean validatingPermission() { private boolean validatingPermission() {