车辆管理项目中异常处理机制
1 package com.ycg.rosefinch.vms.manager.service.common; 2 3 import com.ycg.rdc.framework.application.exception.BusinessException; 4 5 public class VmsBusinessException extends BusinessException { 6 private static final long serialVersionUID = -1054869492237073561L; 7 8 /** 9 * 异常code 10 */ 11 protected String errCode; 12 13 /** 14 * 异常信息 15 */ 16 private String natvieMsg; 17 18 /** 19 * 异常 arguments 20 */ 21 private Object[] arguments; 22 public VmsBusinessException() { 23 super(); 24 } 25 26 public VmsBusinessException(String msg) { 27 super(msg); 28 } 29 30 public VmsBusinessException(String msg, Throwable cause) { 31 super(msg, cause); 32 } 33 34 public VmsBusinessException(String code, String msg) { 35 super(msg); 36 this.errCode = code; 37 } 38 39 public VmsBusinessException(String code, String msg, Throwable cause) { 40 super(msg, cause); 41 this.errCode = code; 42 } 43 44 public VmsBusinessException(String code, String msg, String natvieMsg) { 45 super(msg); 46 this.errCode = code; 47 this.natvieMsg = natvieMsg; 48 } 49 50 public VmsBusinessException(String code, String msg,String natvieMsg, Throwable cause) { 51 super(msg, cause); 52 this.errCode = code; 53 this.natvieMsg = natvieMsg; 54 } 55 56 public VmsBusinessException(String code,Object... args) { 57 super(); 58 this.errCode = code; 59 this.arguments = args; 60 } 61 62 public VmsBusinessException(String code,String msg, Object... args) { 63 super(msg); 64 this.errCode = code; 65 this.arguments = args; 66 } 67 68 @Override 69 public void setErrorArguments(Object... args) { 70 this.arguments = args; 71 } 72 73 @Override 74 public Object[] getErrorArguments() { 75 return this.arguments; 76 } 77 78 @Override 79 public String getErrorCode() { 80 return this.errCode; 81 } 82 83 @Override 84 public String getNativeMessage() { 85 return natvieMsg; 86 } 87 }
1 package com.ycg.rosefinch.op.vms.manager.web.model; 2 3 import java.io.Serializable; 4 5 import com.fasterxml.jackson.annotation.JsonIgnore; 6 import com.fasterxml.jackson.annotation.JsonProperty; 7 8 public class ResponseModel implements Serializable { 9 /** 10 * 11 */ 12 private static final long serialVersionUID = -5598840566266782861L; 13 14 @JsonProperty("StatusCode") 15 private String StatusCode; 16 17 @JsonProperty("Data") 18 private Object Data; 19 20 @JsonProperty("ErrorMessage") 21 private String ErrorMessage; 22 23 @JsonProperty("ExptMsgDetail") 24 private String exptMsgDetail; 25 26 @JsonIgnore 27 public String getStatusCode() { 28 return StatusCode; 29 } 30 31 @JsonIgnore 32 public void setStatusCode(String statusCode) { 33 StatusCode = statusCode; 34 } 35 36 @JsonIgnore 37 public Object getData() { 38 return Data; 39 } 40 41 @JsonIgnore 42 public void setData(Object data) { 43 Data = data; 44 } 45 46 @JsonIgnore 47 public String getErrorMessage() { 48 return ErrorMessage; 49 } 50 51 @JsonIgnore 52 public void setErrorMessage(String errorMessage) { 53 ErrorMessage = errorMessage; 54 } 55 56 @JsonIgnore 57 public String getExptMsgDetail() { 58 return exptMsgDetail; 59 } 60 61 @JsonIgnore 62 public void setExptMsgDetail(String exptMsgDetail) { 63 this.exptMsgDetail = exptMsgDetail; 64 } 65 66 @Override 67 public String toString() { 68 return "ResponseModel{" + 69 "StatusCode='" + StatusCode + '\'' + 70 ", Data=" + Data + 71 ", ErrorMessage='" + ErrorMessage + '\'' + 72 ", exptMsgDetail='" + exptMsgDetail + '\'' + 73 '}'; 74 } 75 }
1 @RequestMapping(value="addVehicleManager",method=RequestMethod.POST, produces = "application/json; charset=utf-8") 2 public @ResponseBody ResponseModel addVehicleManager(HttpServletRequest request,HttpServletResponse response,@RequestBody ContractVehicleManagerModel model){ 3 ResponseModel resp = new ResponseModel(); 4 logger.info("新增合同车辆信息-/contract/vehicle/addVehicleManager>" + JSONObject.toJSONString(model)); 5 if (model == null) { 6 resp.setErrorMessage(VmsManageConstants.RESPONSE_FAILURE); 7 resp.setStatusCode("Lx011-00001-0000021"); 8 resp.setExptMsgDetail("传入的数据不能为空"); 9 return resp; 10 } 11 try { 12 LoginUserInfo loginUserInfo = super.getAuthSession().getAuthInfo(request.getHeader("token")); 13 vmsContractVehicleManagerService.insertContractVehicle(model,model.getLineModelList(),loginUserInfo); 14 resp.setStatusCode("Sx000-00000-000000"); 15 resp.setErrorMessage(VmsManageConstants.RESPONSE_SUCCESS); 16 resp.setExptMsgDetail("合同车辆添加成功!"); 17 }catch (VmsBusinessException e) { 18 resp.setStatusCode("Lx011-00001-0000021"); 19 resp.setErrorMessage(e.getMessage()); 20 resp.setExptMsgDetail("车辆信息添加异常!"+e.getMessage()); 21 } catch (Exception e) { 22 resp.setStatusCode("Lx011-00001-0000022"); 23 resp.setErrorMessage("车辆信息添加异常"); 24 resp.setExptMsgDetail("车辆信息添加异常!"+e.getMessage()); 25 } 26 return resp; 27 }
1 @Override 2 @Transactional 3 public void insertContractVehicle(ContractVehicleManagerModel model,List<VmsVehicleLineFerightModel> lineModelList,LoginUserInfo loginUserInfo) { 4 try { 5 //添加车辆基础信息表数据 6 VmsVehicleManager vehicleEntity = new VmsVehicleManager(); 7 convertT1ToT2(model, vehicleEntity); 8 9 if (model.getVehicleNo() != null && vmsOwnVehicleService.isExistVehicleNo(model.getVehicleNo())) { 10 super.getLogger().error("合同车牌号-车牌号:" + model.getVehicleNo() + "已存在"); 11 throw new VmsBusinessException("合同车新增-车牌号:" + model.getVehicleNo() + "已存在"); 12 } 13 14 vehicleEntity.setVehicleNature(CarNatureEnum.CAR_HETONGCHE.getCode()); 15 // 通过车牌号 生成车标码 16 String simpleNo = vichileNoAreacodeService.simpleNoByVehicleNo(vehicleEntity.getVehicleNo()); 17 vehicleEntity.setSimpleNo(simpleNo); 18 vehicleEntity.setCarCategory(1); 19 if(loginUserInfo != null){ 20 vehicleEntity.setCreateUserName(loginUserInfo.getUserName()); 21 vehicleEntity.setCreateUserCode(loginUserInfo.getUserId()); 22 vehicleEntity.setCreateSiteName(loginUserInfo.getLoginSiteName()); 23 vehicleEntity.setCreateSiteName(loginUserInfo.getLoginSiteCode()); 24 vehicleEntity.setCreateDate(new Date()); 25 }else{ 26 throw new VmsBusinessException("未获取到当前登录人信息,请登陆系统后重试!"); 27 } 28 vehicleEntity = vmsVehicleManagerDao.addSelectivity(vehicleEntity); 29 30 if(vehicleEntity != null){ 31 Long vehicleId = vehicleEntity.getId(); 32 //添加合同车辆信息表数据 33 VmsContractVehicle contractVehicle = new VmsContractVehicle(); 34 convertT1ToT2(model, contractVehicle); 35 contractVehicle.setVehicleID(vehicleId); 36 contractVehicle.setId(uniqueIdCenterService.generateId()); 37 vmsContractVehicleDao.insertVmsContractVehicle(contractVehicle); 38 //添加车线信息表数据 39 if(lineModelList != null && lineModelList.size() > 0){ 40 for(VmsVehicleLineFerightModel lineModel : lineModelList){ 41 lineModel.setId(uniqueIdCenterService.generateId()); 42 lineModel.setVehicleId(vehicleId); 43 lineModel.setVehicleNo(vehicleEntity.getVehicleNo()); 44 vmsVehicleLineFerightDao.insert(super.convertT1ToT2(lineModel, new VmsVehicleLineFeright())); 45 } 46 } 47 }else{ 48 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 49 throw new VmsBusinessException("车辆基础信息插入失败"); 50 } 51 52 } catch (Exception e) { 53 super.getLogger().error(e.getMessage(), e); 54 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 55 throw new VmsBusinessException("合同车辆信息插入异常"+e); 56 } 57 }