Commit c997214d authored by kang.nie@inzymeits.com's avatar kang.nie@inzymeits.com
Browse files

初始化代码

parent 741c2feb
Pipeline #3107 failed with stages
in 0 seconds
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.eiam.dto.UserDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author stayAnd
* @date 2022/4/15
*/
@ApiModel("账号分页查询参数")
@Data
public class UserAccountPageQueryDTO {
@ApiModelProperty(value = "当前页码")
private Integer currPage = 1;
@ApiModelProperty(value = "页面显示行数")
private Integer pageSize = 10;
@ApiModelProperty("指定查询的组织id")
private String organId;
@ApiModelProperty("姓名")
private String userName;
@ApiModelProperty("账号")
private String account;
@ApiModelProperty("手机号")
private String phone;
public UserDTO toQueryDto() {
UserDTO userDTO = new UserDTO();
userDTO.setCurrPage(this.getCurrPage());
userDTO.setPageSize(this.getPageSize());
userDTO.setFullName(this.getUserName());
userDTO.setUserName(this.getAccount());
userDTO.setPhone(this.getPhone());
return userDTO;
}
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.rnr.enterprise.common.DesensitizationFieId;
import com.cusc.nirvana.user.rnr.enterprise.util.DesensitizationUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author stayAnd
* @date 2022/4/15
*/
@Data
@ApiModel("用户账户更新信息")
public class UserAccountUpdateDTO {
@ApiModelProperty("id")
private String id;
@ApiModelProperty("姓名")
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_NAME,sort = 1)
private String userName;
@ApiModelProperty("昵称")
private String nickName;
@ApiModelProperty("手机号")
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_PHONE,sort = 2)
private String phone;
@ApiModelProperty("账号")
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_NONE,sort = 0)
private String account;
@ApiModelProperty("角色code")
private String roleCode;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.eiam.dto.UserDTO;
import com.cusc.nirvana.user.rnr.enterprise.common.DesensitizationFieId;
import com.cusc.nirvana.user.rnr.enterprise.util.DesensitizationUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author stayAnd
* @date 2022/4/15
*/
@ApiModel("新增员工信息")
@Data
public class UserAddRequestDTO {
@ApiModelProperty("指定组织id")
private String organId;
@ApiModelProperty("姓名")
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_NAME,sort = 1)
private String userName;
@ApiModelProperty("昵称")
private String nickName;
@ApiModelProperty("手机号")
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_PHONE,sort = 2)
private String phone;
@ApiModelProperty("账号")
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_NONE,sort = 0)
private String account;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("确认密码")
private String confirmPassword;
@ApiModelProperty("角色code")
@NotNull
private String roleCode;
public UserDTO toUserDto() {
UserDTO userDTO = new UserDTO();
userDTO.setFullName(this.getUserName());
userDTO.setNickName(this.getNickName());
userDTO.setPhone(this.getPhone());
userDTO.setUserName(this.getAccount());
userDTO.setPassword(this.getPassword());
return userDTO;
}
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO;
import lombok.Data;
/**
* 解绑/换卡 vin-iccids phone DTO
*/
@Data
public class UserInfoAndCardListDTO {
private VehicleCardRnrDTO vehicleCardRnrDTO;
private MgRnrInfoDTO mgRnrInfoDTO;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.eiam.dto.UserPasswordDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Description: 密码加密请求
* <br />
* CreateDate 2022-06-12 22:41:18
*
* @author yuyi
**/
@Data
public class UserPasswReqDTO extends UserPasswordDTO {
@ApiModelProperty(value = "平台来源 Web H5")
private String platformSource;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.rnr.enterprise.common.DesensitizationFieId;
import com.cusc.nirvana.user.rnr.enterprise.dto.validator.groups.VehicleCardRnrGroup;
import com.cusc.nirvana.user.rnr.enterprise.util.DesensitizationUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* Description: 剩余卡绑定DTO
* <br />
* CreateDate 2022-04-20 20:22:56
*
* @author yuyi
**/
@Data
public class VehicleCardRnrDTO implements Serializable {
private static final long serialVersionUID = -5712879585098743410L;
@ApiModelProperty(value = "车辆VIN号")
@NotBlank(message = "vin不能为空", groups = {VehicleCardRnrGroup.Query.class})
@DesensitizationFieId(desensitizationRule = DesensitizationUtil.DESENSITIZATION_VIN,sort = 0)
private String vin;
@ApiModelProperty(value = "实名id")
@NotBlank(message = "实名id不能为空", groups = {VehicleCardRnrGroup.Submit.class})
private String rnrId;
@ApiModelProperty(value = "ICCID编码集合")
@NotEmpty(message = "ICCID不能为空", groups = {VehicleCardRnrGroup.Submit.class})
private List<String> iccidList;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.*;
import java.util.List;
/**
* Description: 车企实名时车企信息回显DTO
* <br />
* CreateDate 2022-05-03 11:15:51
*
* @author yuyi
**/
@Data
public class VehicleEnterpriseRnrEchoDTO implements Serializable {
private static final long serialVersionUID = 8325801116331488860L;
@ApiModelProperty("请求ID")
private String requestId;
@ApiModelProperty("车企信息id")
private String vehicleEnterpriseId;
@ApiModelProperty("企业名称")
private String companyName;
@ApiModelProperty("企业证件类型")
private String companyCertType;
@ApiModelProperty("企业证件类型名称")
private String companyCertTypeName;
@ApiModelProperty("企业证件号码")
private String companyCertNumber;
@ApiModelProperty("责任人姓名")
private String corporationName;
@ApiModelProperty("责任人手机号")
private String corporationPhone;
@ApiModelProperty("企业实名认证授权书")
private List<String> authorizationLetterPic;
@ApiModelProperty("责任告知书")
private List<String> dutyPic;
@ApiModelProperty("入网合同")
private List<String> contractPic;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import com.cusc.nirvana.user.rnr.fp.dto.VinCardDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.*;
import java.util.List;
/**
* Description: 车卡实名信息DTO
* <br />
* CreateDate 2022-04-20 20:40:56
*
* @author yuyi
**/
@Data
public class VehicleRnrVinCardInfoDTO implements Serializable {
private static final long serialVersionUID = -5712879585098743410L;
@ApiModelProperty(value = "请求ID")
private String requestId;
@ApiModelProperty(value = "文件系统ID")
@NotBlank(message = "文件不能为空")
private String fileId;
@ApiModelProperty(value = "车辆VIN号和ICCID编码对集合")
private List<VinCardDTO> vinCardList;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import lombok.Data;
/**
* @className: VinCheckDTO
* @description:
* @date: 2022/6/20 10:43
* @version: 1.0
**/
@Data
public class VinCheckDTO {
/**
* 检查结果
*/
private Boolean checkResult;
/**
* vin
*/
private String vin;
/**
* 错误信息
*/
private String errorMsg;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @className: VinCheckDto
* @description: 检查vin
* @author: jk
* @date: 2022/6/16 18:49
* @version: 1.0
**/
@Data
public class VinCheckResponseDTO {
private List<VinCheckDTO> list;
/**
* 工单id
*/
private String orderId;
@ApiModelProperty("解绑手机号")
private String phone;
@ApiModelProperty("姓名")
private String userName;
}
package com.cusc.nirvana.user.rnr.enterprise.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
/**
* 车辆VIN号DTO
*
* @author huchenhui
* @date 2022-04-15
*/
@Data
@Accessors(chain = true)
public class VinDTO {
@ApiModelProperty(value = "车辆VIN号")
@NotBlank(message = "车辆VIN号不能为空")
private String vin;
}
package com.cusc.nirvana.user.rnr.enterprise.dto.validator.groups;
/**
* Description: 企业责任人变更DTO
* <br />
* CreateDate 2022-04-20 16:41:45
*
* @author yuyi
**/
public interface EnterpriseCorporationChangeGroup {
/**
* Description: 查询参数验证
* <br />
* CreateDate 2022-04-20 17:05:51
*
* @author yuyi
**/
interface Query{}
/**
* Description: 提交参数验证
* <br />
* CreateDate 2022-04-20 17:05:51
*
* @author yuyi
**/
interface Submit{}
}
package com.cusc.nirvana.user.rnr.enterprise.dto.validator.groups;
import javax.validation.groups.Default;
/**
* @author yubo
* @since 2022-04-18 16:30
*/
public interface PersonalSubmit extends Default {
}
package com.cusc.nirvana.user.rnr.enterprise.dto.validator.groups;
import javax.validation.groups.Default;
/**
* @author yubo
* @since 2022-04-18 16:32
*/
public interface PersonalVehicleCardVerify extends Default {
}
package com.cusc.nirvana.user.rnr.enterprise.dto.validator.groups;
/**
* Description: 剩余卡绑定验证分组
* <br />
* CreateDate 2022-04-20 16:41:45
*
* @author yuyi
**/
public interface VehicleCardRnrGroup {
/**
* Description: 查询参数验证
* <br />
* CreateDate 2022-04-20 17:05:51
*
* @author yuyi
**/
interface Query{}
/**
* Description: 提交参数验证
* <br />
* CreateDate 2022-04-20 17:05:51
*
* @author yuyi
**/
interface Submit{}
}
package com.cusc.nirvana.user.rnr.enterprise.dto.validator.groups;
import javax.validation.groups.Default;
/**
* @author yubo
* @since 2022-04-18 11:24
*/
public interface VehicleCardVerify extends Default {
}
package com.cusc.nirvana.user.rnr.enterprise.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class CarInfoEscalationRow extends CarInfoRow {
/**导入失败原因*/
@ExcelProperty(value = "ERROR_INFO", index = 20)
private String errorInfo;
}
package com.cusc.nirvana.user.rnr.enterprise.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelAnalysisStopException;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.rnr.enterprise.constants.FuelTypeEnum;
import com.cusc.nirvana.user.rnr.enterprise.constants.PlaceOfOriginOfVehicleEnum;
import com.cusc.nirvana.user.rnr.enterprise.constants.VehicleChannelTypeEnum;
import com.cusc.nirvana.user.rnr.enterprise.constants.VehicleTypeEnum;
import com.cusc.nirvana.user.rnr.enterprise.dto.ImportSimDTO;
import com.cusc.nirvana.user.rnr.enterprise.excel.utils.EasyExcelUtil;
import com.cusc.nirvana.user.rnr.fp.client.FpCarInfoClient;
import com.cusc.nirvana.user.rnr.fp.dto.CarInfoBindingDTO;
import com.cusc.nirvana.user.rnr.fp.dto.FpCarInfoDTO;
import com.cusc.nirvana.user.rnr.fp.dto.SimVehicleBindingResult;
import com.cusc.nirvana.user.rnr.mg.dto.SimFileHistoryDTO;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @className: CarInfoListener
* @description: 业务处理
* @author: jk
* @date: 2022/6/29 10:42
* @version: 1.0
**/
public class CarInfoListener extends AnalysisEventListener<CarInfoRow> {
private final static Logger LOGGER = LoggerFactory.getLogger(VehicleSimListener.class);
/**每隔500条提交数据处理*/
private static final int BATCH_COUNT = 500;
private FpCarInfoClient fpCarInfoClient;
private SimFileHistoryDTO simFileHistoryDTO;
private String errorExcelFile;
private EasyExcelUtil easyExcelUtil;
private ImportSimDTO importSimDTO;
private String creator;
private String tenantNo;
/**存放批数据*/
private Map<String, CarInfoEscalationRow> batchCache = new HashMap<>();
public CarInfoListener(FpCarInfoClient fpCarInfoClient,
SimFileHistoryDTO simFileHistoryDTO, String errorExcelFile, ImportSimDTO importSimDTO,String creator,String tenantNo) {
this.fpCarInfoClient = fpCarInfoClient;
this.simFileHistoryDTO = simFileHistoryDTO;
this.errorExcelFile = errorExcelFile;
this.importSimDTO = importSimDTO;
this.creator = creator;
this.tenantNo = tenantNo;
}
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
super.invokeHeadMap(headMap, context);
if (headMap.size() < 20) {
simFileHistoryDTO.setErrorInfo("文件标题不符合模板要求,文件标题:[" + headMap.values() + "]");
throw new ExcelAnalysisStopException("文件不符合模板要求。文件标题:[" + headMap.values() + "]");
}
}
@Override
public void invoke(CarInfoRow carInfoRow, AnalysisContext analysisContext) {
String failReason = validata(carInfoRow);
CarInfoEscalationRow infoRow = rowToInfoRow(carInfoRow);
if (CuscStringUtils.isNotEmpty(failReason)) {
infoRow.setErrorInfo(failReason);
writeErrorExcel(infoRow);
return;
}
batchCache.put(infoRow.getVin(), infoRow);
if (batchCache.size() >= BATCH_COUNT) {
processData();
batchCache.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
processData();
excelFinish();
}
@Override
public void onException(Exception exception, AnalysisContext context) throws Exception {
exception.printStackTrace();
simFileHistoryDTO.setErrorInfo("车辆信息有问题,请下载文件查看详情");
excelFinish();
throw new ExcelAnalysisStopException("车辆信息有问题,请下载文件查看详情");
}
private void processData() {
CarInfoBindingDTO bindingDTO = new CarInfoBindingDTO();
bindingDTO.setOrganizationId(simFileHistoryDTO.getOrgUuid());
bindingDTO.setTagUuid(importSimDTO.getTagUuid());
bindingDTO.setCreator(simFileHistoryDTO.getCreator());
List<FpCarInfoDTO> fpCarInfoDTOS = new ArrayList<>();
String tagId =CuscStringUtils.generateUuid();
batchCache.values().forEach(infoRow -> {
FpCarInfoDTO dto = infoRowToDto(infoRow);
dto.setUuid(CuscStringUtils.generateUuid());
dto.setOrgid(importSimDTO.getOrgUuid());
dto.setCreator(creator);
dto.setTenantno(tenantNo);
dto.setOperator(creator);
dto.setTagId(tagId);
fpCarInfoDTOS.add(dto);
});
bindingDTO.setBindingList(fpCarInfoDTOS);
//入库处理
Response<SimVehicleBindingResult> response = fpCarInfoClient.addBatch(bindingDTO);
if (!response.isSuccess()) {
fpCarInfoDTOS.forEach(simVehicleDTO -> {
CarInfoEscalationRow infoRow = dtoToInfoRow(simVehicleDTO);
infoRow.setErrorInfo("导入失败");
writeErrorExcel(infoRow);
});
return;
}
}
private CarInfoEscalationRow dtoToInfoRow(FpCarInfoDTO dto) {
CarInfoEscalationRow infoRow = new CarInfoEscalationRow();
CarInfoEscalationRow tmp = batchCache.get(dto.getVin());
BeanUtils.copyProperties(tmp,infoRow);
infoRow.setErrorInfo(dto.getFailReason());
return infoRow;
}
private FpCarInfoDTO infoRowToDto(CarInfoEscalationRow infoRow) {
FpCarInfoDTO dto = new FpCarInfoDTO();
BeanUtils.copyProperties(infoRow,dto);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(infoRow.getVehicleDepartureTime()!=null){
dto.setVehicleDepartureTime(simpleDateFormat.format(infoRow.getVehicleDepartureTime()));
}
if(infoRow.getVehicleSalesTime()!=null) {
dto.setVehicleSalesTime(simpleDateFormat.format(infoRow.getVehicleSalesTime()));
}
if(infoRow.getVehicleSalesUpdateTime()!=null) {
dto.setVehicleSalesUpdateTime(simpleDateFormat.format(infoRow.getVehicleSalesUpdateTime()));
}
return dto;
}
/**
* 生成错误文件信息
* @param infoRow
*/
private void writeErrorExcel(CarInfoEscalationRow infoRow) {
simFileHistoryDTO.setErrorCount(simFileHistoryDTO.getErrorCount() + 1);
if (easyExcelUtil == null) {
easyExcelUtil = new EasyExcelUtil();
easyExcelUtil.init(errorExcelFile, "Sheet1", CarInfoEscalationRow.class);
}
List<CarInfoEscalationRow> infoRows = new ArrayList<>();
infoRows.add(infoRow);
easyExcelUtil.addExcel(infoRows);
}
private void excelFinish() {
if (easyExcelUtil != null) {
easyExcelUtil.finish();
}
}
private CarInfoEscalationRow rowToInfoRow(CarInfoRow carInfoRow) {
CarInfoEscalationRow infoRow = new CarInfoEscalationRow();
infoRow.setNameVehicleEnterprise(StringUtils.isEmpty(carInfoRow.getNameVehicleEnterprise())?"":carInfoRow.getNameVehicleEnterprise().trim());
infoRow.setVin(StringUtils.isEmpty(carInfoRow.getVin())?"":carInfoRow.getVin().trim());
infoRow.setVehicleType(StringUtils.isEmpty(carInfoRow.getVehicleType())?"null":carInfoRow.getVehicleType().trim());
infoRow.setPlaceOfOriginOfVehicle(StringUtils.isEmpty(carInfoRow.getPlaceOfOriginOfVehicle())?"null":carInfoRow.getPlaceOfOriginOfVehicle().trim());
infoRow.setVehicleDepartment(StringUtils.isEmpty(carInfoRow.getVehicleDepartment())?"":carInfoRow.getVehicleDepartment().trim());
infoRow.setVehicleName(StringUtils.isEmpty(carInfoRow.getVehicleName())?"":carInfoRow.getVehicleName().trim());
infoRow.setVehicleNum(StringUtils.isEmpty(carInfoRow.getVehicleNum())?"":carInfoRow.getVehicleNum().trim());
infoRow.setVehicleModel(StringUtils.isEmpty(carInfoRow.getVehicleModel())?"":carInfoRow.getVehicleModel().trim());
infoRow.setBodyColor(StringUtils.isEmpty(carInfoRow.getBodyColor())?"":carInfoRow.getBodyColor().trim());
infoRow.setFuelType(StringUtils.isEmpty(carInfoRow.getFuelType())?null:carInfoRow.getFuelType().trim());
infoRow.setEngineNum(StringUtils.isEmpty(carInfoRow.getEngineNum())?"":carInfoRow.getEngineNum().trim());
infoRow.setMotorNum(StringUtils.isEmpty(carInfoRow.getMotorNum())?"":carInfoRow.getMotorNum().trim());
infoRow.setLicensePlateNumber(StringUtils.isEmpty(carInfoRow.getLicensePlateNumber())?"":carInfoRow.getLicensePlateNumber().trim());
infoRow.setVehicleChannelName(StringUtils.isEmpty(carInfoRow.getVehicleChannelName())?"":carInfoRow.getVehicleChannelName().trim());
infoRow.setVehicleChannelType(StringUtils.isEmpty(carInfoRow.getVehicleChannelType())?null:carInfoRow.getVehicleChannelType().trim());
infoRow.setVehicleStaffName(StringUtils.isEmpty(carInfoRow.getVehicleStaffName())?"":carInfoRow.getVehicleStaffName().trim());
infoRow.setVehicleLogginAddress(StringUtils.isEmpty(carInfoRow.getVehicleLogginAddress())?"":carInfoRow.getVehicleLogginAddress().trim());
infoRow.setVehicleDepartureTime(carInfoRow.getVehicleDepartureTime());
infoRow.setVehicleSalesTime(carInfoRow.getVehicleSalesTime());
infoRow.setVehicleSalesUpdateTime(carInfoRow.getVehicleSalesUpdateTime());
// BeanUtils.copyProperties(carInfoRow,infoRow);
return infoRow;
}
private String validata(CarInfoRow row) {
String failReason = "";
if (StringUtils.isBlank(row.getNameVehicleEnterprise())) {
failReason = "道路机动车辆生产企业名称为空";
}else {
if(row.getNameVehicleEnterprise().length()>32){
failReason = "道路机动车辆生产企业名称超长";
}
}
if (StringUtils.isBlank(row.getVin())) {
failReason = "VIN为空";
}else {
if(row.getVin().length()>64){
failReason = "VIN超长";
}
}
if (StringUtils.isBlank(row.getVehicleType())) {
failReason = "车辆类型为空";
}else {
if(null == VehicleTypeEnum.getEnumByCode(row.getVehicleType())){
failReason = "车辆类型与法规不一致";
}
if(row.getVehicleType().length()>2){
failReason = "车辆类型超长";
}
}
if (StringUtils.isBlank(row.getPlaceOfOriginOfVehicle())) {
failReason = "车辆产地为空";
}else {
if(null == PlaceOfOriginOfVehicleEnum.getEnumByCode(row.getPlaceOfOriginOfVehicle())){
failReason = "车辆产地与法规不一致";
}
if(row.getPlaceOfOriginOfVehicle().length()>2){
failReason = "车辆产地超长";
}
}
if (StringUtils.isBlank(row.getVehicleDepartment())) {
failReason = "车辆品牌为空";
}else {
if(row.getVehicleDepartment().length()>32){
failReason = "车辆品牌超长";
}
}
if (StringUtils.isBlank(row.getVehicleName())) {
failReason = "车辆名称为空";
}else {
if(row.getVehicleName().length()>32){
failReason = "车辆名称超长";
}
}
if (StringUtils.isBlank(row.getVehicleNum())) {
failReason = "车辆型号为空";
}else {
if(row.getVehicleNum().length()>32){
failReason = "车辆型号超长";
}
}
if (StringUtils.isBlank(row.getVehicleModel())) {
failReason = "车型通用名称为空";
}else {
if(row.getVehicleModel().length()>32){
failReason = "车型通用名称超长";
}
}
if (StringUtils.isBlank(row.getBodyColor())) {
failReason = "车身颜色为空";
}else {
if(row.getBodyColor().length()>32){
failReason = "车身颜色超长";
}
}
if (StringUtils.isBlank(row.getFuelType())) {
failReason = "燃料种类为空";
}else {
String[] fuelType = row.getFuelType().split(",");
for(int i = 0 ;i<fuelType.length;i++){
if(null == FuelTypeEnum.getEnumByCode(fuelType[i])){
failReason = "燃料种类与法规不一致";
}
}
if(row.getFuelType().length()>32){
failReason = "燃料种类超长";
}
}
// if (StringUtils.isBlank(row.getEngineNum())) {
// failReason = "发动机号码为空";
// }
//
// if (StringUtils.isBlank(row.getMotorNum())) {
// failReason = "电动机序列号为空";
// }
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String vehicleDepartureTime = simpleDateFormat.format(row.getVehicleDepartureTime());
if (StringUtils.isBlank(vehicleDepartureTime)) {
failReason = "车辆出厂时间为空";
}
String vehicleSalesTime=simpleDateFormat.format(row.getVehicleSalesTime());;
if (StringUtils.isBlank(vehicleSalesTime)) {
failReason = "车辆销售时间为空";
}
// if (StringUtils.isBlank(row.getVehicleSalesUpdateTime())) {
// failReason = "车辆销售信息变更时间为空";
// }
//
// if (StringUtils.isBlank(row.getLicensePlateNumber())) {
// failReason = "车牌号码为空";
// }else {
// if(row.getLicensePlateNumber().length()>64){
// failReason = "车牌号码超长";
// }
// }
if (StringUtils.isBlank(row.getVehicleChannelName())) {
failReason = "车辆销售渠道名称为空";
}else {
if(row.getVehicleChannelName().length()>32){
failReason = "车辆销售渠道名称超长";
}
}
if (StringUtils.isBlank(row.getVehicleChannelType())) {
failReason = "车辆销售渠道类型为空";
}else {
if(null == VehicleChannelTypeEnum.getEnumByCode(row.getVehicleChannelType())){
failReason = "车辆销售渠道类型不符合法规要求";
}
if(row.getVehicleChannelType().length()>2){
failReason = "车辆销售渠道类型超长";
}
}
if (StringUtils.isBlank(row.getVehicleStaffName())) {
failReason = "车辆销售渠道员工姓名为空";
}else {
if(row.getVehicleStaffName().length()>32){
failReason = "车辆销售渠道员工姓名超长";
}
}
if (StringUtils.isBlank(row.getVehicleLogginAddress())) {
failReason = "车辆销售渠道地址为空";
}else {
if(row.getVehicleLogginAddress().length()>32){
failReason = "车辆销售渠道地址超长";
}
}
return failReason;
}
}
package com.cusc.nirvana.user.rnr.enterprise.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author yuzp
* @file SimVehicleRow
* @date 2022/4/1
* @E-mail yuzp19@chinaunicom.cn
*/
@Data
public class CarInfoRow {
@ExcelProperty(value = "道路机动车辆生产企业名称", index = 0)
private String nameVehicleEnterprise;
@ExcelProperty(value = "VIN", index = 1)
private String vin;
@ExcelProperty(value = "车辆类型", index = 2)
private String vehicleType;
@ExcelProperty(value = "车辆产地", index = 3)
private String placeOfOriginOfVehicle;
@ExcelProperty(value = "车辆品牌", index = 4)
private String vehicleDepartment;
@ExcelProperty(value = "车辆名称", index = 5)
private String vehicleName;
@ExcelProperty(value = "车辆型号", index = 6)
private String vehicleNum;
@ExcelProperty(value = "车型通用名称", index = 7)
private String vehicleModel;
@ExcelProperty(value = "车身颜色", index = 8)
private String bodyColor;
@ExcelProperty(value = "燃料种类", index = 9)
private String fuelType;
@ExcelProperty(value = "发动机号码", index = 10)
private String engineNum;
@ExcelProperty(value = "电动机序列号", index = 11)
private String motorNum;
@ExcelProperty(value = "车辆出厂时间", index = 12)
private Date vehicleDepartureTime;
@ExcelProperty(value = "车辆销售时间", index = 13)
private Date vehicleSalesTime;
@ExcelProperty(value = "车辆销售信息变更时间", index = 14)
private Date vehicleSalesUpdateTime;
@ExcelProperty(value = "车牌号码", index = 15)
private String licensePlateNumber;
@ExcelProperty(value = "车辆销售渠道名称", index = 16)
private String vehicleChannelName;
@ExcelProperty(value = "车辆销售渠道类型", index = 17)
private String vehicleChannelType;
@ExcelProperty(value = "车辆销售渠道员工姓名", index = 18)
private String vehicleStaffName;
@ExcelProperty(value = "车辆销售渠道地址", index = 19)
private String vehicleLogginAddress;
}
package com.cusc.nirvana.user.rnr.enterprise.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelAnalysisStopException;
import com.cusc.nirvana.user.rnr.enterprise.constants.FuelTypeEnum;
import com.cusc.nirvana.user.rnr.enterprise.constants.PlaceOfOriginOfVehicleEnum;
import com.cusc.nirvana.user.rnr.enterprise.constants.VehicleChannelTypeEnum;
import com.cusc.nirvana.user.rnr.enterprise.constants.VehicleTypeEnum;
import com.cusc.nirvana.user.rnr.mg.dto.SimFileHistoryDTO;
import org.apache.commons.lang3.StringUtils;
import java.text.SimpleDateFormat;
import java.util.Map;
public class CarInfoRowCountListener extends AnalysisEventListener<CarInfoRow> {
private SimFileHistoryDTO simFileHistoryDTO;
private int rowIndex = 2;
public CarInfoRowCountListener(SimFileHistoryDTO simFileHistoryDTO) {
this.simFileHistoryDTO = simFileHistoryDTO;
}
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
super.invokeHeadMap(headMap, context);
if (headMap.size() < 20) {
simFileHistoryDTO.setErrorInfo("文件标题不符合模板要求,文件标题:[" + headMap.values() + "]");
throw new ExcelAnalysisStopException("文件不符合模板要求。文件标题:[" + headMap.values() + "]");
}
}
@Override
public void invoke(CarInfoRow data, AnalysisContext context) {
// String failReason = validata(data);
simFileHistoryDTO.setTotalCount(simFileHistoryDTO.getTotalCount() + 1);
// if (CuscStringUtils.isNotEmpty(failReason)) {
// throw new ExcelAnalysisStopException("导入文件在["+rowIndex+"]行校验失败,错误原因["+failReason+"],请核实!");
// }
// rowIndex++;
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
/**
* 验证iccid和vin是否正确
* @param row
* @return
*/
private String validata(CarInfoRow row) {
String failReason = "";
if (StringUtils.isBlank(row.getNameVehicleEnterprise())) {
failReason = "道路机动车辆生产企业名称为空";
}
if (StringUtils.isBlank(row.getVin())) {
failReason = "VIN为空";
}
if (StringUtils.isBlank(row.getVehicleType())) {
failReason = "车辆类型为空";
}else {
if(null == VehicleTypeEnum.getEnumByCode(row.getVehicleType())){
failReason = "车辆类型与法规不一致";
}
}
if (StringUtils.isBlank(row.getPlaceOfOriginOfVehicle())) {
failReason = "车辆产地为空";
}else {
if(null == PlaceOfOriginOfVehicleEnum.getEnumByCode(row.getPlaceOfOriginOfVehicle())){
failReason = "车辆产地与法规不一致";
}
}
if (StringUtils.isBlank(row.getVehicleDepartment())) {
failReason = "车辆品牌为空";
}
if (StringUtils.isBlank(row.getVehicleName())) {
failReason = "车辆名称为空";
}
if (StringUtils.isBlank(row.getVehicleNum())) {
failReason = "车辆型号为空";
}
if (StringUtils.isBlank(row.getVehicleModel())) {
failReason = "车型通用名称为空";
}
if (StringUtils.isBlank(row.getBodyColor())) {
failReason = "车身颜色为空";
}
if (StringUtils.isBlank(row.getFuelType())) {
failReason = "燃料种类为空";
}else {
if(null == FuelTypeEnum.getEnumByCode(row.getFuelType())){
failReason = "燃料种类与法规不一致";
}
}
// if (StringUtils.isBlank(row.getEngineNum())) {
// failReason = "发动机号码为空";
// }
//
// if (StringUtils.isBlank(row.getMotorNum())) {
// failReason = "电动机序列号为空";
// }
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String vehicleDepartureTime = simpleDateFormat.format(row.getVehicleDepartureTime());
if (StringUtils.isBlank(vehicleDepartureTime)) {
failReason = "车辆出厂时间为空";
}
String vehicleSalesTime=simpleDateFormat.format(row.getVehicleSalesTime());;
if (StringUtils.isBlank(vehicleSalesTime)) {
failReason = "车辆销售时间为空";
}
// if (StringUtils.isBlank(row.getVehicleSalesUpdateTime())) {
// failReason = "车辆销售信息变更时间为空";
// }
//
// if (StringUtils.isBlank(row.getLicensePlateNumber())) {
// failReason = "车牌号码为空";
// }
if (StringUtils.isBlank(row.getVehicleChannelName())) {
failReason = "车辆销售渠道名称为空";
}
if (StringUtils.isBlank(row.getVehicleChannelType())) {
failReason = "车辆销售渠道类型为空";
}else {
if(null == VehicleChannelTypeEnum.getEnumByCode(row.getVehicleChannelType())){
failReason = "车辆销售渠道类型不符合法规要求";
}
}
if (StringUtils.isBlank(row.getVehicleStaffName())) {
failReason = "车辆销售渠道员工姓名为空";
}
if (StringUtils.isBlank(row.getVehicleLogginAddress())) {
failReason = "车辆销售渠道地址为空";
}
return failReason;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment