package com.zteits.pay.biz; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.clouds.common.constants.ExamineStateEnum; import com.github.pagehelper.PageInfo; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.apibase.constants.DataStatusEnum; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.pay.TdCCustPersonDTO; import com.zteits.clouds.api.dto.pay.car.dto.CustCarInfoDTO; import com.zteits.clouds.api.dto.pay.car.param.CustCarInfoCheckStatusUpdateReq; import com.zteits.clouds.api.dto.pay.car.param.CustCarInfoQueryReq; import com.zteits.clouds.api.dto.pay.car.param.UserCarInfoQueryForPageReq; import com.zteits.clouds.api.dto.pay.param.AppIDcardReviewRequest; import com.zteits.pay.dao.TdCCustPersonDao; import com.zteits.pay.domain.TdCCarCheckRecord; import com.zteits.pay.domain.TdCCustPerson; import com.zteits.pay.pagepager.PageBeanUtil; import com.zteits.pay.service.carcheckrecord.oper.TdCCarCheckRecordOperInnerService; import com.zteits.pay.util.CredentialsReviewService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.clouds.common.utils.ListCopyUtil; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.dto.pay.TdCCarDTO; import com.zteits.clouds.api.dto.pay.param.QueryTdCCarInfoByCustIdOrCarNumReq; import com.zteits.clouds.api.dto.pay.param.TdCCarEditRequest; import com.zteits.clouds.api.dto.pay.param.TdCCarRequest; import com.zteits.clouds.api.service.pay.TdCCarService; import com.zteits.pay.dao.TdCCarDao; import com.zteits.pay.domain.TdCCar; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; @Service("com.zteits.pay.biz.TdCCarServiceImpl") public class TdCCarServiceImpl implements TdCCarService { @Autowired private TdCCarDao tdCCarDao; @Autowired private TdCCustPersonDao tdCCustPersonDao; @Autowired private CredentialsReviewService credentialsReviewService; @Autowired private TdCCarCheckRecordOperInnerService tdCCarCheckRecordOperInnerService; @Override public BizResult> selectCustInfoBycustId(TdCCarRequest request) { List carlistdto = new ArrayList(); List carlist = tdCCarDao.selectCustInfoBycustId(request); if(CollectionUtils.isNotEmpty(carlist)){ for(TdCCar car :carlist){ TdCCarDTO dto = new TdCCarDTO(); BeanUtils.copyProperties(car, dto); carlistdto.add(dto); } } return new BizResult>(carlistdto); } @Override public BizResult updateCars(TdCCarEditRequest request) { TdCCar car = new TdCCar(); BeanUtils.copyProperties(request, car); Integer i = tdCCarDao.updateCars(car); return new BizResult(i); } @Override public BizResult insertCars(TdCCarEditRequest request) { TdCCar car = new TdCCar(); BeanUtils.copyProperties(request, car); car.setDataState(1); Integer i = tdCCarDao.insertCars(car); return new BizResult(i); } @Override public BizResult deleteCars(TdCCarEditRequest request) { TdCCar car = new TdCCar(); BeanUtils.copyProperties(request, car); Integer i = tdCCarDao.deleteCars(car); return new BizResult(i); } @Override public BizResult> selectCustInfo(TdCCarRequest request) { List carlistdto = new ArrayList(); TdCCar reqcar = new TdCCar(); BeanUtils.copyProperties(request, reqcar); List carlist = tdCCarDao.selectCustInfo(reqcar); if(CollectionUtils.isNotEmpty(carlist)){ for(TdCCar car :carlist){ TdCCarDTO dto = new TdCCarDTO(); BeanUtils.copyProperties(car, dto); carlistdto.add(dto); } } return new BizResult>(carlistdto); } @Override public BizResult> queryUserCarInfoForPage(UserCarInfoQueryForPageReq req) { PageBean pageBean = new PageBean<>(); PageInfo pageInfo = tdCCarDao.queryUserCarInfoForPageAndPN(req); PageBeanUtil.copyProperties(pageInfo,pageBean,TdCCarDTO.class); return new BizResult<>(pageBean); } @Override public BizResult> queryCustCarInfoByPhone(UserCarInfoQueryForPageReq req) { List list = tdCCarDao.queryCustCarInfoByPhone(req); return new BizResult<>(list); } @Override public BizResult queryCustCarInfo(CustCarInfoQueryReq request) { if(StringUtils.isEmpty(request.getCustId())){ throw new BizException(ErrorType.PAY_TYPE_ERROR,"客户ID"); } /** * 1、 查询 custPersonDTO */ TdCCustPerson person = tdCCustPersonDao.queryPersonByCustId(request.getCustId()); TdCCustPersonDTO personDTO = null; if(null != person){ personDTO = new TdCCustPersonDTO(); BeanUtils.copyProperties(person,personDTO); } /** * 2、查询 carDTOS */ TdCCar queryCar = new TdCCar(); queryCar.setCustId(request.getCustId()); queryCar.setCarNumber(request.getCarNumber()); List carList = tdCCarDao.selectCustInfo(queryCar); List carDTOS = null; if(CollectionUtils.isNotEmpty(carList)){ carDTOS = new ArrayList<>(); ListCopyUtil.listCopyProperties(carList,carDTOS,TdCCarDTO.class); } /** * 3、赋值 */ CustCarInfoDTO custCarInfoDTO = new CustCarInfoDTO(); custCarInfoDTO.setCustPersonDTO(personDTO); custCarInfoDTO.setCarDTOS(carDTOS); return new BizResult<>(custCarInfoDTO); } @Override @Transactional public BizResult updateCustCarInfoCheckStatus(CustCarInfoCheckStatusUpdateReq req) { if(null == req.getId()){ throw new BizException(ErrorType.PARAMM_NULL,"主键信息"); } if(null == req.getCheckStatus()){ throw new BizException(ErrorType.PARAMM_NULL,"审核状态"); } if(StringUtils.isEmpty(req.getRemark())){ throw new BizException(ErrorType.PARAMM_NULL,"备注信息"); } //推送消息时用 int checkStatus = req.getCheckStatus(); //审核被撤销时,入参传入0,保存时为3 if(req.getCheckStatus().equals(0)){ req.setCheckStatus(3); } /** * 1、根据主键查询车辆信息 */ TdCCar car = tdCCarDao.selectCustCarInfoById(req.getId()); if(null == car){ throw new BizException(ErrorType.BIZ_ERROR,"查找不到车辆信息"); } /** * 2、更新车辆信息审核状态 */ TdCCar updateCar = new TdCCar(); updateCar.setId(car.getId()); updateCar.setExamineState(req.getCheckStatus()); int num = tdCCarDao.updateCars(updateCar); if(num < 1){ throw new BizException(ErrorType.BIZ_ERROR,"更新审核状态失败"); } /** * 3、记录操作流水 */ TdCCarCheckRecord record = new TdCCarCheckRecord(); BeanUtils.copyProperties(car,record); record.setId(null); record.setCarShelfNum(car.getCarShelfNum()); record.setCarEngineNum(car.getCarEngineNum()); record.setPhoneNum(car.getPhoneNumber()); record.setOperId(req.getsOpId().intValue()); record.setOperName(req.getsOpName()); record.setDataStatus(DataStatusEnum.DATA_STATUS_VALID.value()); record.setCheckRemark(req.getRemark()); record.setOperTime(new Date()); record.setCheckState(req.getCheckStatus()); record.setCheckRemark(req.getRemark()); num = tdCCarCheckRecordOperInnerService.saveTdCCarCheckRecord(record); if(num < 1){ throw new BizException(ErrorType.BIZ_ERROR,"保存车辆审核操作流水失败"); } /**向车主推送车牌审核信息*/ record.setCheckState(checkStatus); sendMsg(num,record); return new BizResult<>(true); } private void sendMsg(int num, TdCCarCheckRecord record) { if (TransactionSynchronizationManager.isActualTransactionActive()) { //存在事物 TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { //成功后推送,否则不推送 if(num > 0) { credentialsReviewService.driverLicenseResPush(record); } } }); } else { if(num > 0) { credentialsReviewService.driverLicenseResPush(record); } } } /** * 通过个人客户id或车牌查询车牌信息.
* @param custId * @return * @author wangfs */ @Override public BizResult> queryTdCCarInfoByCustIdOrCarNum(QueryTdCCarInfoByCustIdOrCarNumReq request) { List list = new ArrayList<>(); TdCCar reqcar = new TdCCar(); reqcar.setCarNumber(request.getCarNumber()); reqcar.setCustId(request.getCustId()); List selectCustInfo = tdCCarDao.selectCustInfo(reqcar); ListCopyUtil.listCopyProperties(selectCustInfo, list, TdCCarDTO.class); return new BizResult<>(list); } @Override public BizResult queryCustCarInfoByCarNumber(CustCarInfoQueryReq request) { CustCarInfoDTO dto = new CustCarInfoDTO(); List carDTOS = new ArrayList<>(); TdCCustPersonDTO personDTO = new TdCCustPersonDTO(); //查询车辆信息 List list = tdCCarDao.selectCustInfoByCarNumber(request); if(CollectionUtils.isEmpty(list)){ return new BizResult<>(dto); } ListCopyUtil.listCopyProperties(list, carDTOS, TdCCarDTO.class); dto.setCarDTOS(carDTOS); //查询用户信息 String custId = list.get(0).getCustId(); TdCCustPerson person = tdCCustPersonDao.queryPersonByCustId(custId); if(null != person){ personDTO = new TdCCustPersonDTO(); BeanUtils.copyProperties(person,personDTO); dto.setCustPersonDTO(personDTO); } return new BizResult<>(dto); } @Transactional(rollbackFor = Exception.class) @Override public BizResult DriverLicenseReview(TdCCarEditRequest request) { /**主表车辆表保存驾驶证图片并更新审核状态信息*/ TdCCar car = new TdCCar(); BeanUtils.copyProperties(request, car); Integer i = tdCCarDao.updateCars(car); /**审核记录表新增审核记录,状态为待审核*/ TdCCar tdCCar = tdCCarDao.selectCustCarInfoById(request.getId()); TdCCarCheckRecord tdCCarCheckRecord = new TdCCarCheckRecord(); BeanUtils.copyProperties(tdCCar,tdCCarCheckRecord); tdCCarCheckRecord.setId(null); tdCCarCheckRecord.setCarCheckType(1); tdCCarCheckRecord.setCheckState(ExamineStateEnum.NoAudit.getValue()); int j = tdCCarCheckRecordOperInnerService.saveTdCCarCheckRecord(tdCCarCheckRecord); return new BizResult<>(i>0 & j>0); } @Override public BizResult IDcardReview(AppIDcardReviewRequest request) { /**主表车辆表更新车主审核状态信息*/ TdCCar car = new TdCCar(); BeanUtils.copyProperties(request,car); car.setCardCheckState(ExamineStateEnum.NoAudit.getValue()); Integer i = tdCCarDao.updateCars(car); /**审核记录表新增车主身份审核记录,状态为未审核*/ TdCCar tdCCar = tdCCarDao.selectCustCarInfoById(request.getId()); TdCCarCheckRecord tdCCarCheckRecord = new TdCCarCheckRecord(); BeanUtils.copyProperties(tdCCar,tdCCarCheckRecord); BeanUtils.copyProperties(request,tdCCarCheckRecord); tdCCarCheckRecord.setId(null); tdCCarCheckRecord.setCarCheckType(2); tdCCarCheckRecord.setCheckState(ExamineStateEnum.NoAudit.getValue()); int j = tdCCarCheckRecordOperInnerService.saveTdCCarCheckRecord(tdCCarCheckRecord); return new BizResult<>(i>0 & j>0); } }