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

初始化代码

parent 12156d65
Pipeline #3109 failed with stages
in 0 seconds
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.alibaba.fastjson.JSON;
import com.cache.redis.util.FastJsonUtils;
import com.cusc.nirvana.common.loader.CollectionUtils;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.eiam.dto.OrganizationDTO;
import com.cusc.nirvana.user.exception.CuscUserException;
import com.cusc.nirvana.user.rnr.common.constants.ResponseCode;
import com.cusc.nirvana.user.rnr.mg.constants.MessageCallbackStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.NoticeStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrBizzTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogBizTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogOptTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogSubTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrStatus;
import com.cusc.nirvana.user.rnr.mg.converter.MgRnrCardInfoConverter;
import com.cusc.nirvana.user.rnr.mg.dao.entity.MgRnrCardInfoPO;
import com.cusc.nirvana.user.rnr.mg.dao.entity.MgRnrOperationLogPO;
import com.cusc.nirvana.user.rnr.mg.dto.InfoLogCommentDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgCardNoticeDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrRelationDTO;
import com.cusc.nirvana.user.rnr.mg.dto.SurplusConfirmDto;
import com.cusc.nirvana.user.rnr.mg.service.*;
import com.cusc.nirvana.user.util.CuscStringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* @author yubo
* @since 2022-05-03 15:43
*/
@Service
@Slf4j
public class MgSurplusBindServiceImpl implements IMgSurplusBindService {
@Autowired
private IRnrOrderService rnrOrderService;
@Autowired
private IMgRnrCardInfoService rnrCardInfoService;
@Autowired
private IMgRnrOperationLogService rnrOperationLogService;
@Autowired
private IMgRnrCardNoticeService cardNoticeService;
@Autowired
private IOrganService organService;
@Autowired
private IMqSendService mqSendService;
@Autowired
private NotifyCloudService notifyCloudService;
@Override
@Transactional(rollbackFor = Throwable.class)
public String saveRelation(RnrRelationDTO relationDTO) {
log.info("Mg realtionInfo:" + JSON.toJSONString(relationDTO));
if (CollectionUtils.isEmpty(relationDTO.getCardList())) {
throw new CuscUserException(ResponseCode.ICCID_NOT_NULL.getCode(), ResponseCode.ICCID_NOT_NULL.getMsg());
}
MgRnrInfoDTO info = relationDTO.getInfo();
RnrOrderDTO order = relationDTO.getOrder();
//设置订单信息
order.setRnrId(info.getUuid());
//日志信息
InfoLogCommentDTO comment = new InfoLogCommentDTO();
comment.setUserId(info.getUuid());
comment.setLang(LocaleContextHolder.getLocale().toString());
String logComment = FastJsonUtils.convertObjectToJSON(comment);
//日志信息
List<MgRnrOperationLogPO> cardLogList = new ArrayList<>();
MgRnrOperationLogPO rnrOptLog;
//组装卡信息
List<MgRnrCardInfoPO> cardPOList = new ArrayList<>();
MgRnrCardInfoPO cardInfoPO;
for (MgRnrCardInfoDTO cardDTO : relationDTO.getCardList()) {
//设置卡信息
cardDTO.setUuid(CuscStringUtils.generateUuid());
cardDTO.setRnrId(info.getUuid());
cardDTO.setTenantNo(info.getTenantNo());
cardDTO.setRoutingKey(info.getRoutingKey());
cardDTO.setOrderId(order.getUuid());
cardInfoPO = MgRnrCardInfoConverter.INSTANCE.dtoToPo(cardDTO);
cardPOList.add(cardInfoPO);
//设置日志信息
rnrOptLog = new MgRnrOperationLogPO();
rnrOptLog.setUuid(CuscStringUtils.generateUuid());
rnrOptLog.setBizType(RnrOptLogBizTypeEnum.CARD.getCode());
rnrOptLog.setBizUuid(cardDTO.getUuid());
rnrOptLog.setOptType(RnrOptLogOptTypeEnum.OPERATE_RNR.getCode());
rnrOptLog.setOptSubType(RnrOptLogSubTypeEnum.CREATE_OPERATE.getCode());
rnrOptLog.setOptTime(new Date());
rnrOptLog.setContent(logComment);
rnrOptLog.setIsBatchOrder(order.getIsBatchOrder());
rnrOptLog.setSource(order.getOrderSource());
rnrOptLog.setSerialNumber(order.getSerialNumber());
rnrOptLog.setCreator(info.getCreator());
rnrOptLog.setTenantNo(order.getTenantNo());
cardLogList.add(rnrOptLog);
}
//保存卡信息
rnrCardInfoService.addRnrCardBatch(cardPOList);
//保存工单信息
rnrOrderService.insertOrder(order);
//发送mq
mqSendService.sendBindUnbindExchangeMq(order.getUuid());
//保存操作日志-异步
rnrOperationLogService.addRnrOperationLogPOBatch(cardLogList);
return order.getUuid();
}
@Override
@Transactional(rollbackFor = Throwable.class)
public void surplusConfirm(SurplusConfirmDto confirmDto) {
RnrOrderDTO rnrOrderDTO = new RnrOrderDTO();
rnrOrderDTO.setUuid(confirmDto.getOrderId());
rnrOrderDTO = rnrOrderService.getByUuid(rnrOrderDTO);
if (rnrOrderDTO == null) {
throw new CuscUserException("", "未查询到工单信息:" + confirmDto.getOrderId());
}
//如果工单已经完成直接返回
if (!RnrOrderStatusEnum.notFinished(rnrOrderDTO.getOrderStatus())) {
return;
}
int rnrStatus = RnrStatus.RNR_FAIL.getCode();
int orderStatus = RnrOrderStatusEnum.CANCEL.getCode();
int noticeStatus = NoticeStatusEnum.NONEED.getCode();
if (confirmDto.getCallbackStatusEnum() == MessageCallbackStatusEnum.Y.getCode()) {
rnrStatus = RnrStatus.RNR.getCode();
orderStatus = RnrOrderStatusEnum.PASS.getCode();
noticeStatus = NoticeStatusEnum.NEED.getCode();
} else if (confirmDto.getCallbackStatusEnum() == MessageCallbackStatusEnum.N.getCode()) {
rnrStatus = RnrStatus.RNR_FAIL.getCode();
orderStatus = RnrOrderStatusEnum.NOT_PASS.getCode();
noticeStatus = NoticeStatusEnum.NONEED.getCode();
}
//成功,需要发送mq消息
List<MgCardNoticeDTO> mqList = new ArrayList<>();
if (confirmDto.getCallbackStatusEnum() == MessageCallbackStatusEnum.Y.getCode()) {
//查询车企信息
String manufacturerOrgId;
OrganizationDTO organ = new OrganizationDTO();
organ.setTenantNo(rnrOrderDTO.getTenantNo());
organ.setUuid(rnrOrderDTO.getOrgId());
Response<OrganizationDTO> organResp = organService.getCarSubOrganByOrgId(organ);
if (organResp != null && organResp.isSuccess() && organResp.getData() != null) {
manufacturerOrgId = organResp.getData().getUuid();
}else{
log.warn("surplusConfirm 获取车企组织失败,{}", JSON.toJSONString(organResp));
manufacturerOrgId = "0";
}
MgCardNoticeDTO mqDTO;
MgRnrCardInfoDTO cardInfoDTO = new MgRnrCardInfoDTO();
cardInfoDTO.setOrderId(confirmDto.getOrderId());
List<MgRnrCardInfoDTO> mgRnrCardInfoDTOS = rnrCardInfoService.queryByList(cardInfoDTO);
for (MgRnrCardInfoDTO cardDTO : mgRnrCardInfoDTOS) {
//设置消息信息
mqDTO = new MgCardNoticeDTO();
mqDTO.setVin(cardDTO.getIotId());
mqDTO.setRnrBizzType(RnrBizzTypeEnum.Bind.getCode());
mqDTO.setOrderId(cardDTO.getOrderId());
mqDTO.setIccid(cardDTO.getIccid());
mqDTO.setManufacturerOrgId(manufacturerOrgId);
mqDTO.setResultCode(orderStatus);
mqDTO.setTenantNo(rnrOrderDTO.getTenantNo());
mqDTO.setOrgId(rnrOrderDTO.getOrgId());
mqList.add(mqDTO);
}
//通知云平台
notifyCloudService.notifyResult(mgRnrCardInfoDTOS, RnrBizzTypeEnum.Bind.getCode().toString(), UUID.randomUUID().toString()
, null, RnrOrderStatusEnum.PASS.getCode().toString());
}
//更新卡状态
rnrCardInfoService.updateCardStatusByOrderId(confirmDto.getOrderId(), noticeStatus, rnrStatus);
//更新订单状态
rnrOrderService.updateOrderStatus(Collections.singletonList(confirmDto.getOrderId()), orderStatus);
//异步发送消息
if (!CollectionUtils.isEmpty(mqList)) {
cardNoticeService.sendCardNotice(mqList);
}
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.MgTenantBizzConfigConverter;
import com.cusc.nirvana.user.rnr.mg.dao.MgTenantBizzConfigDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.MgTenantBizzConfigPO;
import com.cusc.nirvana.user.rnr.mg.dto.MgTenantBizzConfigDTO;
import com.cusc.nirvana.user.rnr.mg.service.IMgTenantBizzConfigService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 租户业务配置(MgTenantBizzConfig)表服务实现类
*
* @author yuy336
* @since 2022-06-14 09:36:11
*/
@Service
public class MgTenantBizzConfigServiceImpl extends ServiceImpl<MgTenantBizzConfigDao, MgTenantBizzConfigPO> implements IMgTenantBizzConfigService {
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public MgTenantBizzConfigDTO getByUuid(MgTenantBizzConfigDTO bean) {
MgTenantBizzConfigPO record = this.getPoByUuid(bean.getUuid());;
return MgTenantBizzConfigConverter.INSTANCE.poToDto(record);
}
/**
* 通过查询条件查询集合数据
*
* @param bean
* @return 集合对象
*/
@Override
public List<MgTenantBizzConfigDTO> queryByList(MgTenantBizzConfigDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
List<MgTenantBizzConfigPO> record = this.list(queryWrapper);
return MgTenantBizzConfigConverter.INSTANCE.poListToDtoList(record);
}
/**
* 分页查询
*
* @param bean 筛选条件
* @return 查询结果
*/
@Override
public PageResult<MgTenantBizzConfigDTO> queryByPage(MgTenantBizzConfigDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("create_time");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
Page<MgTenantBizzConfigPO> page =
this.page(new Page<>(bean.getCurrPage(), bean.getPageSize()), queryWrapper);
return PageHelper.convert(page, MgTenantBizzConfigDTO.class);
}
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public MgTenantBizzConfigDTO insert(MgTenantBizzConfigDTO bean) {
MgTenantBizzConfigPO mgTenantBizzConfigPO = MgTenantBizzConfigConverter.INSTANCE.dtoToPo(bean);
mgTenantBizzConfigPO.setUuid(CuscStringUtils.generateUuid());
this.save(mgTenantBizzConfigPO);
bean.setUuid(mgTenantBizzConfigPO.getUuid());
return bean;
}
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public MgTenantBizzConfigDTO update(MgTenantBizzConfigDTO bean) {
MgTenantBizzConfigPO mgTenantBizzConfigPO = this.getPoByUuid(bean.getUuid());
if(mgTenantBizzConfigPO == null){
return null;
}
MgTenantBizzConfigPO tmpBean = MgTenantBizzConfigConverter.INSTANCE.dtoToPo(bean);
tmpBean.setId(mgTenantBizzConfigPO.getId());
this.updateById(tmpBean);
return bean;
}
/**
* 通过主键删除数据
* @param bean 实例对象
* @return 是否成功
*/
@Override
@Transactional
public boolean deleteById(MgTenantBizzConfigDTO bean) {
MgTenantBizzConfigPO mgTenantBizzConfigPO = this.getPoByUuid(bean.getUuid());
if (mgTenantBizzConfigPO == null) {
return false;
}
MgTenantBizzConfigPO tmpBean = new MgTenantBizzConfigPO();
tmpBean.setId(mgTenantBizzConfigPO.getId());
tmpBean.setIsDelete(CommonDeleteEnum.DELETED.getCode());
return this.updateById(tmpBean);
}
/**
* 通过UUID查询单条数据
*
* @param uuid
* @return 实例对象
*/
private MgTenantBizzConfigPO getPoByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.getOne(queryWrapper);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.constants.CryptKeyHelper;
import com.cusc.nirvana.user.rnr.mg.converter.MgVehicleCompanyConverter;
import com.cusc.nirvana.user.rnr.mg.dao.MgVehicleCompanyDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.MgVehicleCompanyPO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCompanyInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgVehicleCompanyDTO;
import com.cusc.nirvana.user.rnr.mg.service.IMgRnrCompanyInfoService;
import com.cusc.nirvana.user.rnr.mg.service.IMgRnrFileService;
import com.cusc.nirvana.user.rnr.mg.service.IMgRnrInfoService;
import com.cusc.nirvana.user.rnr.mg.service.IMgVehicleCompanyService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 车企信息表(FpVehicleCompany)表服务实现类
*
* @author yuy336
* @since 2022-04-19 20:11:33
*/
@Service
public class MgVehicleCompanyServiceImpl extends ServiceImpl<MgVehicleCompanyDao, MgVehicleCompanyPO>
implements IMgVehicleCompanyService {
@Autowired
IMgRnrCompanyInfoService companyInfoService;
@Autowired
IMgRnrInfoService rnrInfoService;
@Autowired
IMgRnrFileService fileService;
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public MgVehicleCompanyDTO getByUuid(MgVehicleCompanyDTO bean) {
MgVehicleCompanyPO record = this.getPoByUuid(bean.getUuid());
;
return MgVehicleCompanyConverter.INSTANCE.poToDto(record);
}
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public MgVehicleCompanyDTO getVehicleCompany(MgVehicleCompanyDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("tenant_no", bean.getTenantNo());
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getOrgId()), "org_id",
CuscStringUtils.isNotEmpty(bean.getOrgId()));
MgVehicleCompanyPO vehicleCompany = this.getOne(queryWrapper);
return MgVehicleCompanyConverter.INSTANCE.poToDto(vehicleCompany);
}
/**
* 通过查询条件查询集合数据
*
* @param bean
* @return 集合对象
*/
@Override
public List<MgVehicleCompanyDTO> queryByList(MgVehicleCompanyDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getTenantNo()), "tenant_no", bean.getTenantNo());
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getCompanyName()), "company_name", CryptKeyHelper.encrypt(bean.getCompanyName()));
List<MgVehicleCompanyPO> record = this.list(queryWrapper);
return MgVehicleCompanyConverter.INSTANCE.poListToDtoList(record);
}
/**
* 分页查询
*
* @param bean 筛选条件
* @return 查询结果
*/
@Override
public PageResult<MgVehicleCompanyDTO> queryByPage(MgVehicleCompanyDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("create_time");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
Page<MgVehicleCompanyPO> page =
this.page(new Page<>(bean.getCurrPage(), bean.getPageSize()), queryWrapper);
return PageHelper.convert(page, MgVehicleCompanyDTO.class);
}
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public MgVehicleCompanyDTO insert(MgVehicleCompanyDTO bean) {
MgVehicleCompanyPO vehicleCompanyPO = MgVehicleCompanyConverter.INSTANCE.dtoToPo(bean);
vehicleCompanyPO.setUuid(CuscStringUtils.generateUuid());
this.save(vehicleCompanyPO);
bean.setUuid(vehicleCompanyPO.getUuid());
return bean;
}
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public MgVehicleCompanyDTO update(MgVehicleCompanyDTO bean) {
MgVehicleCompanyPO MgVehicleCompanyPO = this.getPoByUuid(bean.getUuid());
if (MgVehicleCompanyPO == null) {
return null;
}
MgVehicleCompanyPO tmpBean = MgVehicleCompanyConverter.INSTANCE.dtoToPo(bean);
tmpBean.setId(MgVehicleCompanyPO.getId());
this.updateById(tmpBean);
return bean;
}
/**
* 通过主键删除数据
*
* @param bean 实例对象
* @return 是否成功
*/
@Override
@Transactional
public boolean deleteById(MgVehicleCompanyDTO bean) {
MgVehicleCompanyPO MgVehicleCompanyPO = this.getPoByUuid(bean.getUuid());
if (MgVehicleCompanyPO == null) {
return false;
}
MgVehicleCompanyPO tmpBean = new MgVehicleCompanyPO();
tmpBean.setId(MgVehicleCompanyPO.getId());
tmpBean.setIsDelete(CommonDeleteEnum.DELETED.getCode());
return this.updateById(tmpBean);
}
@Override
@Transactional
public MgVehicleCompanyDTO saveByRnrId(MgVehicleCompanyDTO bean) {
//通过rnrId查询企业信息
MgRnrCompanyInfoDTO company = new MgRnrCompanyInfoDTO();
company.setRnrId(bean.getFirstRnrId());
company = companyInfoService.getByRnrid(company);
if (company == null) {
return null;
}
bean.setCompanyName(company.getCompanyName());
bean.setCompanyCertType(company.getCompanyCertType());
bean.setCompanyCertNumber(company.getCompanyCertNumber());
this.insert(bean);
return bean;
}
/**
* 通过UUID查询单条数据
*
* @param uuid
* @return 实例对象
*/
private MgVehicleCompanyPO getPoByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.getOne(queryWrapper);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.cache.CacheFactory;
import com.cache.service.ISortSetService;
import com.cusc.nirvana.user.exception.CuscUserException;
import com.cusc.nirvana.user.rnr.mg.constants.RnrMgMqConstant;
import com.cusc.nirvana.user.rnr.mg.service.IMqSendService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @author yubo
* @since 2022-05-04 11:03
*/
@Service
@Slf4j
public class MqSendServiceImpl implements IMqSendService {
@Value("${rnr.mq.bind.delay:180}")
private int delayTime;
@Resource
private CacheFactory cacheFactory;
/**
* 发送一车多卡、换卡消息
*
* @param orderId
*//*
@Override
public void sendBindUnbindExchangeMq(String orderId) {
MgBizNoticeDTO mgBizNoticeDTO = new MgBizNoticeDTO(orderId);
int delayLevel = RnrMqUtil.getLevel(delayTime);
SendResult sendResult = rocketMQTemplate.syncSend(RnrMgMqConstant.RNR_CARD_OPERATION_DELAY_TOPIC
, MessageBuilder.withPayload(mgBizNoticeDTO).build(), RnrMqUtil.MQ_TIME_OUT, delayLevel);
if (sendResult.getSendStatus() != SendStatus.SEND_OK) {
throw new CuscUserException("", "发送延迟消息失败:" + orderId + ":" + sendResult.toString());
}
log.info("发送延迟消息成功:{},{},{}", JSON.toJSONString(mgBizNoticeDTO), delayLevel, sendResult.toString());
}*/
/**
* 发送一车多卡、换卡消息
*
* @param orderId
*/
@Override
public void sendBindUnbindExchangeMq(String orderId) {
try {
//将消息存入redis sortSet,时间戳+过期时间作为score值
ISortSetService sortSetService = cacheFactory.getSortSetService();
Map<String, Double> map = new HashMap<>();
map.put(orderId, ((double) (System.currentTimeMillis() + delayTime * 1000)));
sortSetService.addSortSet("CT:USER:" + RnrMgMqConstant.RNR_CARD_OPERATION_DELAY_TOPIC, map);
} catch (Exception e) {
throw new CuscUserException("", "消息存入redis失败:" + orderId);
}
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.alibaba.fastjson.JSON;
import com.cache.CacheFactory;
import com.cache.exception.CacheException;
import com.cusc.nirvana.user.rnr.common.constants.RedisConstant;
import com.cusc.nirvana.user.rnr.mg.service.NoticeConfigService;
import com.cusc.nirvana.user.rnr.notice.dto.RnrNoticeConfigDTO;
import com.cusc.nirvana.user.rnr.notice.service.IRnrNoticeConfigService;
import com.cusc.nirvana.user.rnr.notice.service.IRnrNoticeContentService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @className: NoticeConfigUtil
* @author: jk
* @date: 2022/7/29 19:11
* @version: 1.0
**/
@Service
@Slf4j
public class NoticeConfigServiceImpl implements NoticeConfigService {
@Resource
private CacheFactory cacheFactory;
@Autowired
private IRnrNoticeConfigService rnrNoticeConfigService;
@Override
public RnrNoticeConfigDTO queryNoticeConfig(String noticeConfigId) {
RnrNoticeConfigDTO rnrNoticeConfigDTO = new RnrNoticeConfigDTO();
String key = RedisConstant.RNR_CARD_STATISTICS_KEY + noticeConfigId;
try {
String str = cacheFactory.getStringService().getValue(key, String.class);
if (StringUtils.isEmpty(str)) {
rnrNoticeConfigDTO.setUuid(noticeConfigId);
RnrNoticeConfigDTO rnrNoticeConfig = rnrNoticeConfigService.getByUuid(rnrNoticeConfigDTO);
if (null != rnrNoticeConfig) {
cacheFactory.getExpireStringService().setExpireValue(key, JSON.toJSONString(rnrNoticeConfig), 60 * 50);
return rnrNoticeConfig;
}
}
RnrNoticeConfigDTO rnrNotice = JSON.parseObject(str,RnrNoticeConfigDTO.class);
return rnrNotice;
} catch (CacheException e) {
return rnrNoticeConfigDTO;
}
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.rnr.common.cloud.CloudMethod;
import com.cusc.nirvana.user.rnr.common.cloud.CloudService;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.UploadResultDto;
import com.cusc.nirvana.user.rnr.mg.dto.VinCardDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
public class NotifyCloudService {
@Autowired
private CloudService cloudService;
@Async
public Response notifyResult(List<MgRnrCardInfoDTO> dtoList, String rnrBizzType, String serialNumber, String orgId, String resultCode) {
Response response = null;
try {
//将实名结果回传给智网(新增)
List<VinCardDTO> vinCardList = new ArrayList<>();
dtoList.forEach(mgRnrCardInfoDTO ->{
VinCardDTO cardDto = new VinCardDTO();
cardDto.setIccid(mgRnrCardInfoDTO.getIccid());
cardDto.setVin(mgRnrCardInfoDTO.getIotId());
cardDto.setOldIccid(mgRnrCardInfoDTO.getOldCardId());
cardDto.setResultCode(resultCode);
vinCardList.add(cardDto);
});
UploadResultDto resultDto = new UploadResultDto();
resultDto.setSerialNumber(serialNumber);
resultDto.setRnrBizzType(rnrBizzType);
resultDto.setVinCardList(vinCardList);
resultDto.setOrgId(orgId);
log.info("通知云端,实名请求是 = {}", resultDto);
response = cloudService.postForResponse(CloudMethod.NOTIFY_RESULT, resultDto, String.class);
log.info("通知云端,返回结果是 = {}", response);
if(!response.isSuccess()){
log.error("通知云端失败,serialNumber = {}", serialNumber);
}else{
// todo 保存记录,可以添加重试机制
}
}catch (Exception e){
log.error("实名结果通知云端出现异常 = {}", e.getMessage());
}
return response;
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.OpenTenantRelationConverter;
import com.cusc.nirvana.user.rnr.mg.dao.OpenTenantRelationDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.OpenTenantRelationPO;
import com.cusc.nirvana.user.rnr.mg.dto.OpenTenantRelationDTO;
import com.cusc.nirvana.user.rnr.mg.service.IOpenTenantRelationService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 开放平台租户和实名制租户映射关系表(OpenTenantRelation)表服务实现类
*
* @author yuy336
* @since 2022-06-15 20:03:28
*/
@Service
public class OpenTenantRelationServiceImpl extends ServiceImpl<OpenTenantRelationDao, OpenTenantRelationPO> implements IOpenTenantRelationService {
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public OpenTenantRelationDTO getByUuid(OpenTenantRelationDTO bean) {
OpenTenantRelationPO record = this.getPoByUuid(bean.getUuid());;
return OpenTenantRelationConverter.INSTANCE.poToDto(record);
}
/**
* 通过查询条件查询集合数据
*
* @param bean
* @return 集合对象
*/
@Override
public List<OpenTenantRelationDTO> queryByList(OpenTenantRelationDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getOpenTenantId()), "open_tenant_id", bean.getOpenTenantId());
queryWrapper.eq("tenant_no", bean.getTenantNo());
List<OpenTenantRelationPO> record = this.list(queryWrapper);
return OpenTenantRelationConverter.INSTANCE.poListToDtoList(record);
}
/**
* 分页查询
*
* @param bean 筛选条件
* @return 查询结果
*/
@Override
public PageResult<OpenTenantRelationDTO> queryByPage(OpenTenantRelationDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("create_time");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getOpenTenantId()), "open_tenant_id", bean.getOpenTenantId());
queryWrapper.eq("tenant_no", bean.getTenantNo());
Page<OpenTenantRelationPO> page =
this.page(new Page<>(bean.getCurrPage(), bean.getPageSize()), queryWrapper);
return PageHelper.convert(page, OpenTenantRelationDTO.class);
}
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public OpenTenantRelationDTO insert(OpenTenantRelationDTO bean) {
OpenTenantRelationPO openTenantRelationPO = OpenTenantRelationConverter.INSTANCE.dtoToPo(bean);
openTenantRelationPO.setUuid(CuscStringUtils.generateUuid());
this.save(openTenantRelationPO);
bean.setUuid(openTenantRelationPO.getUuid());
return bean;
}
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public OpenTenantRelationDTO update(OpenTenantRelationDTO bean) {
OpenTenantRelationPO openTenantRelationPO = this.getPoByUuid(bean.getUuid());
if(openTenantRelationPO == null){
return null;
}
OpenTenantRelationPO tmpBean = OpenTenantRelationConverter.INSTANCE.dtoToPo(bean);
tmpBean.setId(openTenantRelationPO.getId());
this.updateById(tmpBean);
return bean;
}
/**
* 通过主键删除数据
* @param bean 实例对象
* @return 是否成功
*/
@Override
@Transactional
public boolean deleteById(OpenTenantRelationDTO bean) {
OpenTenantRelationPO openTenantRelationPO = this.getPoByUuid(bean.getUuid());
if (openTenantRelationPO == null) {
return false;
}
OpenTenantRelationPO tmpBean = new OpenTenantRelationPO();
tmpBean.setId(openTenantRelationPO.getId());
tmpBean.setIsDelete(CommonDeleteEnum.DELETED.getCode());
return this.updateById(tmpBean);
}
/**
* 通过UUID查询单条数据
*
* @param uuid
* @return 实例对象
*/
private OpenTenantRelationPO getPoByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.getOne(queryWrapper);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.cache.redis.util.FastJsonUtils;
import com.cusc.nirvana.user.rnr.common.dto.RnrMqMessageDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO;
import com.cusc.nirvana.user.rnr.mg.service.IOrderNoticeService;
import com.cusc.nirvana.user.rnr.mg.util.RnrMqUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Description: 实名工单通知服务实现类
* <br />
* CreateDate 2022-03-08 15:22:51
*
* @author yuyi
**/
@Service
@Slf4j
public class OrderNoticeServiceImpl implements IOrderNoticeService {
@Override
public void sendOrderMsg(RnrMqMessageDTO<List<RnrOrderDTO>> bean) {
if (bean != null && bean.getDelayTime() > 0) {
log.debug("工单通知延迟 参数: {}", FastJsonUtils.convertObjectToJSON(bean));
int surplusTime = bean.getSurplusTime();
int delayLevel = RnrMqUtil.getLevel(surplusTime);
bean.setSurplusTime(surplusTime - RnrMqUtil.getValue(delayLevel - 1));
//rocketMQTemplate.syncSend(RnrMgMqConstant.DEAD_LETTER_QUEUE_ORDER,
// MessageBuilder.withPayload(bean).build(), RnrMqUtil.MQ_TIME_OUT, delayLevel);
} else {
//rocketMQTemplate.convertAndSend(RnrMgMqConstant.QUEUE_ORDER_TOPIC, bean);
}
}
@Override
public void sendOrderNotice(List<RnrOrderDTO> orderList) {
//rocketMQTemplate.convertAndSend(RnrMgMqConstant.USER_RNR_MG_ORDER_NOTICE_TOPIC, orderList);
}
//------------------私有方法区-------------------
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.OrgBusinessTagConverter;
import com.cusc.nirvana.user.rnr.mg.dao.OrgBusinessTagDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.OrgBusinessTagPO;
import com.cusc.nirvana.user.rnr.mg.dto.OrgBusinessTagDTO;
import com.cusc.nirvana.user.rnr.mg.service.IOrgBusinessTagService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OrgBusinessTagServiceImpl extends ServiceImpl<OrgBusinessTagDao, OrgBusinessTagPO>
implements IOrgBusinessTagService {
@Override
public Response<OrgBusinessTagDTO> getByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
OrgBusinessTagPO po = this.getOne(queryWrapper);
return Response.createSuccess(OrgBusinessTagConverter.INSTANCE.poToDto(po));
}
@Override
public Response<OrgBusinessTagDTO> getByTagCode(String tenantNo, String tagCode) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("tenant_no", tenantNo);
queryWrapper.eq("tag_code", tagCode);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
OrgBusinessTagPO po = this.getOne(queryWrapper);
return Response.createSuccess(OrgBusinessTagConverter.INSTANCE.poToDto(po));
}
@Override
public Response<OrgBusinessTagDTO> insert(OrgBusinessTagDTO tagDTO) {
if (getByTagCode(tagDTO.getTenantNo(), tagDTO.getTagCode()) != null) {
return Response.createSuccess("标签编码已经存在,请核实!");
}
tagDTO.setUuid(CuscStringUtils.generateUuid());
if (this.save(OrgBusinessTagConverter.INSTANCE.dtoToPo(tagDTO))) {
return Response.createSuccess(tagDTO);
}
return Response.createError("新增标签失败!");
}
@Override
public Response<OrgBusinessTagDTO> update(OrgBusinessTagDTO tagDTO) {
OrgBusinessTagDTO tmpDto = getByTagCode(tagDTO.getTenantNo(), tagDTO.getTagCode()).getData();
if (tmpDto != null && !tmpDto.getUuid().equals(tagDTO.getUuid())) {
return Response.createSuccess("标签编码已经存在,请核实!");
}
UpdateWrapper wrapper = new UpdateWrapper();
wrapper.eq("uuid", tagDTO.getUuid());
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
boolean flag = this.update(OrgBusinessTagConverter.INSTANCE.dtoToPo(tagDTO), wrapper);
return Response.createSuccess(flag);
}
@Override
public Response<Integer> remove(String uuid) {
OrgBusinessTagDTO tagDTO = getByUuid(uuid).getData();
if (tagDTO == null) {
return Response.createSuccess(0);
}
tagDTO.setIsDelete(1);
tagDTO = update(tagDTO).getData();
return Response.createSuccess(tagDTO);
}
@Override
public Response<List<OrgBusinessTagDTO>> query(String tenantNo, String orgUuid) {
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("tenant_no", tenantNo);
if (CuscStringUtils.isNotEmpty(orgUuid)) {
wrapper.eq("org_uuid", orgUuid);
}
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
List<OrgBusinessTagPO> pos = this.list(wrapper);
return Response.createSuccess(OrgBusinessTagConverter.INSTANCE.poListToDtoList(pos));
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.BindingStatus;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.OrgSimRelConverter;
import com.cusc.nirvana.user.rnr.mg.dao.OrgSimRelDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.OrgSimRelPO;
import com.cusc.nirvana.user.rnr.mg.dto.IccIdListRequestDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.OrgSimRelDTO;
import com.cusc.nirvana.user.rnr.mg.dto.OrgSimRelQueryDTO;
import com.cusc.nirvana.user.rnr.mg.service.IOrgSimRelService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import com.cusc.nirvana.user.util.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.support.BindStatus;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@Service
public class OrgSimRelServiceImpl extends ServiceImpl<OrgSimRelDao, OrgSimRelPO>
implements IOrgSimRelService {
@Override
public OrgSimRelDTO getByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
OrgSimRelPO simRelPO = this.getOne(queryWrapper);
return simRelPO == null ? null : OrgSimRelConverter.INSTANCE.poToDto(simRelPO);
}
@Override
public OrgSimRelDTO getByIccid(String iccid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("iccid", iccid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
OrgSimRelPO simRelPO = this.getOne(queryWrapper);
return simRelPO == null ? null : OrgSimRelConverter.INSTANCE.poToDto(simRelPO);
}
@Override
public PageResult<OrgSimRelDTO> queryByPage(OrgSimRelQueryDTO queryDTO) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("org_uuid", queryDTO.getOrgUuid());
if (CuscStringUtils.isNotEmpty(queryDTO.getTagUuid())) {
queryWrapper.eq("tag_code", queryDTO.getTagUuid());
}
if (CuscStringUtils.isNotEmpty(queryDTO.getIccid())) {
queryWrapper.eq("iccid", queryDTO.getIccid());
}
if (CuscStringUtils.isNotEmpty(queryDTO.getVin())) {
queryWrapper.eq("vin", queryDTO.getVin());
}
if (null != queryDTO.getBindStatus()) {
queryWrapper.eq("bind_status", queryDTO.getBindStatus());
}
if (queryDTO.getStartCreateTime() != null) {
queryWrapper.ge("create_time", DateUtils.formatDate(DateUtils.convertDateToLDT(queryDTO.getStartCreateTime()), "yyyy-MM-dd"));
}
if (queryDTO.getEndCreateTime() != null) {
queryWrapper.le("create_time",
DateUtils.formatDate(DateUtils.convertDateToLDT(queryDTO.getEndCreateTime()), "yyyy-MM-dd")+" "
+ "23:59:59");
}
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
Page<OrgSimRelDTO> poPage = this.page(new Page<>(queryDTO.getCurrPage(), queryDTO.getPageSize()), queryWrapper);
return PageHelper.convert(poPage, OrgSimRelDTO.class);
}
@Override
public List<OrgSimRelDTO> queryByList(List<String> iccids) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("iccid", iccids);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.list(queryWrapper);
}
@Override
public List<OrgSimRelDTO> queryByVin(String vin) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("vin", vin);
queryWrapper.eq("bind_status", "0");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.list(queryWrapper);
}
@Override
public OrgSimRelDTO insert(OrgSimRelDTO simRelDTO) {
OrgSimRelDTO tmpDto = getByIccid(simRelDTO.getIccid());
if (tmpDto != null) {
return tmpDto;
}
simRelDTO.setUuid(CuscStringUtils.generateUuid());
OrgSimRelPO orgSimRelPO = OrgSimRelConverter.INSTANCE.dtoToPo(simRelDTO);
this.save(orgSimRelPO);
return simRelDTO;
}
@Override
public Integer insertBatch(List<OrgSimRelDTO> simRelDTOS) {
simRelDTOS.forEach(dto -> {
OrgSimRelDTO tmpDto = getByIccid(dto.getIccid());
if (tmpDto == null) {
dto.setUuid(CuscStringUtils.generateUuid());
} else {
dto.setUuid(tmpDto.getUuid());
dto.setId(tmpDto.getId());
}
});
boolean flag = true;
if (!CollectionUtils.isEmpty(simRelDTOS)) {
flag = this.saveOrUpdateBatch(OrgSimRelConverter.INSTANCE.dtoListToPoList(simRelDTOS));
}
return flag ? simRelDTOS.size() : 0;
}
@Override
public OrgSimRelDTO update(OrgSimRelDTO simRelDTO) {
OrgSimRelDTO bean = this.getByUuid(simRelDTO.getUuid());
if (bean == null) {
return null;
}
simRelDTO.setId(bean.getId());
OrgSimRelPO orgSimRelPO = OrgSimRelConverter.INSTANCE.dtoToPo(simRelDTO);
this.updateById(orgSimRelPO);
return simRelDTO;
}
@Override
public boolean updateBindStatus(String iccid, String vin, Integer bindStatus) {
OrgSimRelPO updatePo = new OrgSimRelPO();
updatePo.setBindStatus(bindStatus);
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("iccid", iccid);
wrapper.eq("vin", vin);
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.update(updatePo,wrapper);
}
@Override
public boolean updateBindIccid(List<String> iccid) {
OrgSimRelPO updatePo = new OrgSimRelPO();
// updatePo.setBindStatus(1);
//卡状态不改,将VIN置空
updatePo.setVin("");
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("iccid", iccid);
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.update(updatePo,wrapper);
}
@Override
public boolean deleteById(OrgSimRelDTO simRelDTO) {
OrgSimRelDTO dto = this.getByUuid(simRelDTO.getUuid());
if (dto == null || !dto.getOrgUuid().equals(simRelDTO.getOrgUuid())) {
return false;
}
simRelDTO.setIsDelete(1);
return this.updateById(OrgSimRelConverter.INSTANCE.dtoToPo(simRelDTO));
}
@Async("updateVinExecutor")
@Override
public void updateVin(List<MgRnrCardInfoDTO> mgRnrCardInfoDTOList) {
List<String> iccidList = mgRnrCardInfoDTOList.stream().map(a -> a.getIccid()).collect(Collectors.toList());
Map<String, MgRnrCardInfoDTO> map = mgRnrCardInfoDTOList.stream().collect(Collectors.toMap(MgRnrCardInfoDTO::getIccid, Function.identity(), (k, v) -> v));
//根据iccid查询出卡信息
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("iccid", iccidList);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
List<OrgSimRelPO> simRelPO = this.list(queryWrapper);
if (CollectionUtils.isEmpty(simRelPO)) {
log.warn("根据iccid没有查询到卡信息,iccid为{}", JSON.toJSON(iccidList));
}
simRelPO.stream().forEach(sim -> {
MgRnrCardInfoDTO mgRnrCardInfoDTO = map.get(sim.getIccid());
if (null != mgRnrCardInfoDTO && StringUtils.isEmpty(sim.getVin())) {
OrgSimRelPO updatePo = new OrgSimRelPO();
updatePo.setVin(mgRnrCardInfoDTO.getIotId());
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("iccid", sim.getIccid());
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
Boolean updateStatus = this.update(updatePo, wrapper);
if (!updateStatus) {
log.warn("根据iccid更新卡信息失败,iccid为{},VIN为{}", sim.getIccid(), sim.getVin());
}
} else if (null != mgRnrCardInfoDTO && !StringUtils.isEmpty(sim.getVin()) && !sim.getVin().equals(mgRnrCardInfoDTO.getIotId())) {
log.info("vin存在且vin不相同,iccid为{},输入VIN为{},数据库中VIN", sim.getIccid(), mgRnrCardInfoDTO.getIotId(), sim.getVin());
}
});
}
@Override
public List<OrgSimRelDTO> queryInfoByIccidAndStatus(IccIdListRequestDTO requestDTO) {
QueryWrapper wrapper = new QueryWrapper();
wrapper.select("DISTINCT iccid");
wrapper.in("iccid",requestDTO.getIccids());
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
wrapper.eq("bind_status",requestDTO.getRnrStatus());
return this.list(wrapper);
}
@Override
public boolean updateStatusByIccid(IccIdListRequestDTO requestDTO) {
OrgSimRelPO updatePo = new OrgSimRelPO();
updatePo.setBindStatus(requestDTO.getRnrStatus());
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("iccid", requestDTO.getIccids());
wrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.update(updatePo,wrapper);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.eiam.client.OrganizationClient;
import com.cusc.nirvana.user.eiam.dto.OrganizationDTO;
import com.cusc.nirvana.user.rnr.mg.constants.OrganBizzTypeEnum;
import com.cusc.nirvana.user.rnr.mg.service.IOrganService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
* Description:组织操作service实现类
* <br />
* CreateDate 2022-07-06 19:33:31
*
* @author yuyi
**/
@Service
@Slf4j
public class OrganServiceImpl implements IOrganService {
@Resource
private OrganizationClient organizationClient;
@Override
public Response<OrganizationDTO> getCarSubOrganByOrgId(OrganizationDTO bean) {
//根据组织id查询组织信息
OrganizationDTO organ = new OrganizationDTO();
organ.setUuid(bean.getUuid());
organ.setTenantNo(bean.getTenantNo());
Response<OrganizationDTO> organResp = organizationClient.getByUuid(organ);
if (!organResp.isSuccess()) {
return Response.createError(organResp.getMsg(), organResp.getCode());
}
organ = organResp.getData();
return getCarSubOrganByQueryCodePrivate(organ);
}
@Override
public Response<OrganizationDTO> getCarSubOrganByQueryCodePrivate(OrganizationDTO bean) {
//根据当前组织的查询编码查询组织信息
List<String> uuidList = Arrays.asList(bean.getQueryCode().split("-"));
OrganizationDTO organSub = new OrganizationDTO();
organSub.setTenantNo(bean.getTenantNo());
organSub.setUuidList(uuidList);
Response<List<OrganizationDTO>> orgListResp = organizationClient.queryByList(organSub);
if (!orgListResp.isSuccess()) {
return Response.createError(orgListResp.getMsg(), orgListResp.getCode());
}
if (CollectionUtils.isEmpty(orgListResp.getData())) {
return Response.createSuccess();
}
for (OrganizationDTO tmp : orgListResp.getData()) {
if (OrganBizzTypeEnum.CAR_FACTORY.getCode() == tmp.getBizType().intValue()
|| OrganBizzTypeEnum.CAR_SUB_ORGAN.getCode() == tmp.getBizType().intValue()) {
return Response.createSuccess(tmp);
}
}
return Response.createSuccess();
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import com.cusc.nirvana.user.exception.CuscUserException;
import com.cusc.nirvana.user.rnr.common.constants.ResponseCode;
import com.cusc.nirvana.user.rnr.mg.service.IFileService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
/**
* @author stayAnd
* @date 2022/6/22
*/
@Service
@Slf4j
public class OssFileServiceImpl implements IFileService {
@Value("${oss.endpoint}")
private String endpoint;
@Value("${oss.accessKeyId}")
private String accessKeyId;
@Value("${oss.accessKeySecret}")
private String accessKeySecret;
@Value("${oss.bucketName}")
private String bucketName;
@Override
public String upLoadImage(InputStream inputStream, String suffix) {
return upLoadFile(inputStream,suffix);
}
@Override
public String upLoadFile(InputStream inputStream,String suffix) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String ossFileKey = CuscStringUtils.generateUuid()+"."+suffix;
PutObjectRequest request = new PutObjectRequest(bucketName,ossFileKey,inputStream);
ossClient.putObject(request);
ossClient.shutdown();
return ossFileKey;
}
@Override
public String upLoadFileBase64Img(String base64, String suffix) {
try {
byte[] bytes = Base64Decoder.decode(base64);
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
return upLoadFile(inputStream,suffix);
} catch (Exception e) {
log.error("upLoadFileBase64Img has error");
}
return "";
}
@Override
public String getFileUrl(String fileKey) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
Date date = new Date(System.currentTimeMillis() +(3600L * 1000) );
URL url = ossClient.generatePresignedUrl(bucketName,fileKey,date);
log.info("OssFileServiceImpl getFileUrl fileKey = {},url = {}",fileKey,url.toString());
return url.toString();
}
@Override
public String downLoadBase64(String fileKey) {
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
GetObjectRequest request = new GetObjectRequest(bucketName,fileKey);
OSSObject object = ossClient.getObject(request);
InputStream inputStream = object.getObjectContent();
byte[] bytes = IOUtils.toByteArray(inputStream);
return Base64Encoder.encode(bytes);
} catch (Exception e) {
throw new CuscUserException(ResponseCode.SYSTEM_ERROR.getCode(),"文件oss下载失败");
}
}
@Override
public Double getFileSize(String fileKey) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
boolean existFlag = ossClient.doesObjectExist(bucketName, fileKey);
if(!existFlag){
throw new CuscUserException("500","文件不存在");
}
ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, fileKey);
Double fileSize = (double) objectMetadata.getContentLength()/1024;
ossClient.shutdown();
return fileSize;
}
@Override
public byte[] downLoadBytes(String fileKey) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
GetObjectRequest request = new GetObjectRequest(bucketName,fileKey);
OSSObject object = ossClient.getObject(request);
InputStream inputStream = object.getObjectContent();
try {
byte[] bytes = IOUtils.toByteArray(inputStream);
return bytes;
} catch (Exception e){
throw new CuscUserException(ResponseCode.SYSTEM_ERROR.getCode(),"文件oss bytes下载失败");
}
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.rnr.mg.dto.RnrInfoChangeDTO;
import com.cusc.nirvana.user.rnr.mg.service.IRnrInfoChangeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* Description: 通用实名更换service
* <br />
* CreateDate 2022-01-26 10:36:27
*
* @author yuyi
**/
@Service
@Slf4j
public class RnrInfoChangeServiceImpl implements IRnrInfoChangeService {
@Override
public Response rnrChange(RnrInfoChangeDTO bean) {
return null;
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.RnrNoticeTemplateConfigConverter;
import com.cusc.nirvana.user.rnr.mg.dao.RnrNoticeTemplateConfigDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.RnrNoticeTemplateConfigPO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrNoticeTemplateConfigDTO;
import com.cusc.nirvana.user.rnr.mg.service.IRnrNoticeTemplateConfigService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 消息模板配置(RnrNoticeTemplateConfig)表服务实现类
*
* @author yuy336
* @since 2022-06-01 11:07:09
*/
@Service
public class RnrNoticeTemplateConfigServiceImpl extends ServiceImpl<RnrNoticeTemplateConfigDao, RnrNoticeTemplateConfigPO> implements IRnrNoticeTemplateConfigService {
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public RnrNoticeTemplateConfigDTO getByUuid(RnrNoticeTemplateConfigDTO bean) {
RnrNoticeTemplateConfigPO record = this.getPoByUuid(bean.getUuid());;
return RnrNoticeTemplateConfigConverter.INSTANCE.poToDto(record);
}
/**
* 通过查询条件查询集合数据
*
* @param bean
* @return 集合对象
*/
@Override
public List<RnrNoticeTemplateConfigDTO> queryByList(RnrNoticeTemplateConfigDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
List<RnrNoticeTemplateConfigPO> record = this.list(queryWrapper);
return RnrNoticeTemplateConfigConverter.INSTANCE.poListToDtoList(record);
}
/**
* 分页查询
*
* @param bean 筛选条件
* @return 查询结果
*/
@Override
public PageResult<RnrNoticeTemplateConfigDTO> queryByPage(RnrNoticeTemplateConfigDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("create_time");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
Page<RnrNoticeTemplateConfigPO> page =
this.page(new Page<>(bean.getCurrPage(), bean.getPageSize()), queryWrapper);
return PageHelper.convert(page, RnrNoticeTemplateConfigDTO.class);
}
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public RnrNoticeTemplateConfigDTO insert(RnrNoticeTemplateConfigDTO bean) {
RnrNoticeTemplateConfigPO rnrNoticeTemplateConfigPO = RnrNoticeTemplateConfigConverter.INSTANCE.dtoToPo(bean);
rnrNoticeTemplateConfigPO.setUuid(CuscStringUtils.generateUuid());
this.save(rnrNoticeTemplateConfigPO);
bean.setUuid(rnrNoticeTemplateConfigPO.getUuid());
return bean;
}
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public RnrNoticeTemplateConfigDTO update(RnrNoticeTemplateConfigDTO bean) {
RnrNoticeTemplateConfigPO rnrNoticeTemplateConfigPO = this.getPoByUuid(bean.getUuid());
if(rnrNoticeTemplateConfigPO == null){
return null;
}
RnrNoticeTemplateConfigPO tmpBean = RnrNoticeTemplateConfigConverter.INSTANCE.dtoToPo(bean);
tmpBean.setId(rnrNoticeTemplateConfigPO.getId());
this.updateById(tmpBean);
return bean;
}
/**
* 通过主键删除数据
* @param bean 实例对象
* @return 是否成功
*/
@Override
@Transactional
public boolean deleteById(RnrNoticeTemplateConfigDTO bean) {
RnrNoticeTemplateConfigPO rnrNoticeTemplateConfigPO = this.getPoByUuid(bean.getUuid());
if (rnrNoticeTemplateConfigPO == null) {
return false;
}
RnrNoticeTemplateConfigPO tmpBean = new RnrNoticeTemplateConfigPO();
tmpBean.setId(rnrNoticeTemplateConfigPO.getId());
tmpBean.setIsDelete(CommonDeleteEnum.DELETED.getCode());
return this.updateById(tmpBean);
}
/**
* 通过UUID查询单条数据
*
* @param uuid
* @return 实例对象
*/
private RnrNoticeTemplateConfigPO getPoByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.getOne(queryWrapper);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.RnrOrderOperationLogConverter;
import com.cusc.nirvana.user.rnr.mg.dao.RnrOrderOperationLogDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.RnrOrderOperationLogPO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrOrderOperationLogDTO;
import com.cusc.nirvana.user.rnr.mg.service.IRnrOrderOperationLogService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 实名工单操作日志(MgRnrOrderOperationLog)表服务实现类
*
* @author yuy336
* @since 2022-03-04 10:07:54
*/
@Service
public class RnrOrderOperationLogServiceImpl extends ServiceImpl<RnrOrderOperationLogDao, RnrOrderOperationLogPO> implements
IRnrOrderOperationLogService {
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public RnrOrderOperationLogDTO getByUuid(RnrOrderOperationLogDTO bean) {
RnrOrderOperationLogPO record = this.getPoByUuid(bean.getUuid());;
return RnrOrderOperationLogConverter.INSTANCE.poToDto(record);
}
/**
* 通过查询条件查询集合数据
*
* @param bean
* @return 集合对象
*/
@Override
public List<RnrOrderOperationLogDTO> queryByList(RnrOrderOperationLogDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
List<RnrOrderOperationLogPO> record = this.list(queryWrapper);
return RnrOrderOperationLogConverter.INSTANCE.poListToDtoList(record);
}
/**
* 分页查询
*
* @param bean 筛选条件
* @return 查询结果
*/
@Override
public PageResult<RnrOrderOperationLogDTO> queryByPage(RnrOrderOperationLogDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("create_time");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
Page<RnrOrderOperationLogPO> page =
this.page(new Page<>(bean.getCurrPage(), bean.getPageSize()), queryWrapper);
return PageHelper.convert(page, RnrOrderOperationLogDTO.class);
}
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public RnrOrderOperationLogDTO insert(RnrOrderOperationLogDTO bean) {
RnrOrderOperationLogPO mgRnrOrderOperationLogPO = RnrOrderOperationLogConverter.INSTANCE.dtoToPo(bean);
mgRnrOrderOperationLogPO.setUuid(CuscStringUtils.generateUuid());
this.save(mgRnrOrderOperationLogPO);
bean.setUuid(mgRnrOrderOperationLogPO.getUuid());
return bean;
}
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public RnrOrderOperationLogDTO update(RnrOrderOperationLogDTO bean) {
RnrOrderOperationLogPO mgRnrOrderOperationLogPO = this.getPoByUuid(bean.getUuid());
if(mgRnrOrderOperationLogPO == null){
return null;
}
RnrOrderOperationLogPO tmpBean = RnrOrderOperationLogConverter.INSTANCE.dtoToPo(bean);
tmpBean.setId(mgRnrOrderOperationLogPO.getId());
this.updateById(tmpBean);
return bean;
}
@Override
public Integer insertBatchOrderOperationLog(List<RnrOrderOperationLogPO> orderOptLogList) {
return baseMapper.insertBatchOrderOperationLog(orderOptLogList);
}
/**
* 通过UUID查询单条数据
*
* @param uuid
* @return 实例对象
*/
private RnrOrderOperationLogPO getPoByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.getOne(queryWrapper);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.exception.CuscUserException;
import com.cusc.nirvana.user.rnr.common.dto.RnrMqMessageDTO;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogSubTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderType;
import com.cusc.nirvana.user.rnr.mg.converter.RnrOrderConverter;
import com.cusc.nirvana.user.rnr.mg.dao.RnrOrderDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.RnrOrderOperationLogPO;
import com.cusc.nirvana.user.rnr.mg.dao.entity.RnrOrderPO;
import com.cusc.nirvana.user.rnr.mg.dto.*;
import com.cusc.nirvana.user.rnr.mg.service.IOrderNoticeService;
import com.cusc.nirvana.user.rnr.mg.service.IRnrOrderOperationLogService;
import com.cusc.nirvana.user.rnr.mg.service.IRnrOrderService;
import com.cusc.nirvana.user.rnr.mg.util.crypt.DesensitizationUtil;
import com.cusc.nirvana.user.rnr.workorder.constants.WorkOrderTypeEnum;
import com.cusc.nirvana.user.rnr.workorder.context.WorkOrderContext;
import com.cusc.nirvana.user.rnr.workorder.dto.WorkOrderStarRequestDTO;
import com.cusc.nirvana.user.util.CuscStringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
* 实名工单信息(MgRnrOrder)表服务实现类
*
* @author yuy336
* @since 2022-01-26 13:49:52
*/
@Service
@Slf4j
public class RnrOrderServiceImpl extends ServiceImpl<RnrOrderDao, RnrOrderPO> implements IRnrOrderService {
@Autowired
private IRnrOrderOperationLogService rnrOrderOperationLogService;
@Autowired
private IOrderNoticeService orderNoticeService;
@Autowired
private WorkOrderContext workOrderContext;
@Autowired
private RnrOrderDao rnrOrderDao;
@Value("${mg.workOrder.applicationId:112f1c67de134e669379e24f160fb25a}")
private String applicationId;
@Value("${mg.workOrder.sendOrderSystemFlag:0}")
private String sendOrderSystemFlag;
/**
* 通过UUID查询单条数据
*
* @param bean
* @return 实例对象
*/
@Override
public RnrOrderDTO getByUuid(RnrOrderDTO bean) {
RnrOrderPO record = this.getPoByUuid(bean.getUuid());
return RnrOrderConverter.INSTANCE.poToDto(record);
}
/**
* 通过查询条件查询集合数据
*
* @param bean
* @return 集合对象
*/
@Override
public List<RnrOrderDTO> queryByList(RnrOrderDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getRnrId()),"rnr_id",bean.getRnrId());
queryWrapper.eq(CuscStringUtils.isNotEmpty(bean.getOrderSource()),"order_source",bean.getOrderSource());
queryWrapper.eq(bean.getRnrBizzType() != null,"rnr_bizz_type",bean.getRnrBizzType());
queryWrapper.eq(bean.getOrderType() != null,"order_type",bean.getOrderType());
queryWrapper.eq(bean.getOrderStatus() != null,"order_status",bean.getOrderStatus());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getUuidList()),"uuid",bean.getUuidList());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getRnrIdList()),"rnr_id",bean.getRnrIdList());
List<RnrOrderPO> record = this.list(queryWrapper);
return RnrOrderConverter.INSTANCE.poListToDtoList(record);
}
/**
* 分页查询
*
* @param bean 筛选条件
* @return 查询结果
*/
@Override
public PageResult<RnrOrderDTO> queryByPage(RnrOrderDTO bean) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("create_time");
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.eq(bean.getOrderStatus() != null, "order_status", bean.getOrderStatus());
queryWrapper.le(bean.getCreateTime() != null, "create_time", bean.getCreateTime());
queryWrapper.eq(StringUtils.isNotBlank(bean.getTenantNo()),"tenant_no",bean.getTenantNo());
queryWrapper.eq(null != bean.getOrderType(),"order_type",bean.getOrderType());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getUuidList()),"uuid",bean.getUuidList());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getRnrIdList()),"rnr_id",bean.getRnrIdList());
queryWrapper.gt(null != bean.getCreateTimeQueryStart(),"create_time",bean.getCreateTimeQueryStart());
queryWrapper.lt(null != bean.getCreateTimeQueryEnd(),"create_time",bean.getCreateTimeQueryEnd());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getOrgIdList()),"org_id",bean.getOrgIdList());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getOrderStatusList()),"order_status",bean.getOrderStatusList());
queryWrapper.in(!CollectionUtils.isEmpty(bean.getOrderTypeList()),"order_type",bean.getOrderTypeList());
Page<RnrOrderPO> page =
this.page(new Page<>(bean.getCurrPage(), bean.getPageSize()), queryWrapper);
return PageHelper.convert(page, RnrOrderDTO.class);
}
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public RnrOrderDTO insert(RnrOrderDTO bean) {
RnrOrderPO rnrOrderPO = RnrOrderConverter.INSTANCE.dtoToPo(bean);
if(CuscStringUtils.isEmpty(bean.getUuid())){
rnrOrderPO.setUuid(CuscStringUtils.generateUuid());
bean.setUuid(rnrOrderPO.getUuid());
}
this.save(rnrOrderPO);
return bean;
}
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
@Override
@Transactional
public RnrOrderDTO update(RnrOrderDTO bean) {
RnrOrderPO MgRnrOrderPO = this.getPoByUuid(bean.getUuid());
if (MgRnrOrderPO == null) {
return null;
}
RnrOrderPO tmpBean = RnrOrderConverter.INSTANCE.dtoToPo(bean);
tmpBean.setId(MgRnrOrderPO.getId());
this.updateById(tmpBean);
return bean;
}
/**
* 通过主键删除数据
*
* @param bean 实例对象
* @return 是否成功
*/
@Override
@Transactional
public boolean deleteById(RnrOrderDTO bean) {
RnrOrderPO MgRnrOrderPO = this.getPoByUuid(bean.getUuid());
if (MgRnrOrderPO == null) {
return false;
}
RnrOrderPO tmpBean = new RnrOrderPO();
tmpBean.setId(MgRnrOrderPO.getId());
tmpBean.setIsDelete(CommonDeleteEnum.DELETED.getCode());
return this.updateById(tmpBean);
}
@Override
public void sendBatchOrderMQ(List<RnrOrderDTO> orderList, Integer orderDelay) {
RnrMqMessageDTO<List<RnrOrderDTO>> mqMsg;
if (orderDelay != null && orderDelay > 0) {
mqMsg = RnrMqMessageDTO.createDelayMsg(orderDelay, orderList);
} else {
mqMsg = RnrMqMessageDTO.createMsg(orderList);
}
orderNoticeService.sendOrderMsg(mqMsg);
}
@Override
public void insertOrder(RnrOrderDTO order) {
// 当前时间
Date now = new Date();
RnrOrderPO orderPO = RnrOrderConverter.INSTANCE.dtoToPo(order);
if (Boolean.TRUE.equals(order.getSendWorkOrder())) {
orderPO.setOrderStatus(RnrOrderStatusEnum.ASSIGNMENT.getCode());
} else {
orderPO.setAuditTime(now);
orderPO.setAllocateTime(now);
}
// 存操作
RnrOrderOperationLogPO orderOperationLogPO = new RnrOrderOperationLogPO();
orderOperationLogPO.setUuid(CuscStringUtils.generateUuid());
orderOperationLogPO.setOrderId(orderPO.getUuid());
orderOperationLogPO.setCreator(orderPO.getCreator() == null ? "0" : orderPO.getCreator());
orderOperationLogPO.setOptType(RnrOptLogSubTypeEnum.CREATE_OPERATE.getCode());
orderOperationLogPO.setUpdatedCode(0L);
orderOperationLogPO.setUpdatedContent("本单由工号:" + orderPO.getCreator() + "创建");
orderOperationLogPO.setOptTime(now);
orderOperationLogPO.setTenantNo(orderPO.getTenantNo());
orderOperationLogPO.setRnrId(orderPO.getRnrId());
baseMapper.insert(orderPO);
rnrOrderOperationLogService.insertBatchOrderOperationLog(Collections.singletonList(orderOperationLogPO));
}
@Override
public Integer insertBatchOrder(List<RnrOrderDTO> orderList) {
// 当前时间
Date now = new Date();
RnrOrderPO orderPO;
List<RnrOrderPO> orderSaveList = new ArrayList<>();
RnrOrderOperationLogPO orderOperationLogPO;
List<RnrOrderOperationLogPO> orderLogList = new ArrayList<>();
// List<RnrOrderDTO> failedOrderDTOS = new ArrayList<>();
for (RnrOrderDTO order : orderList) {
// 存工单
orderPO = RnrOrderConverter.INSTANCE.dtoToPo(order);
if (orderPO.getOrderStatus() == RnrOrderStatusEnum.PASS.getCode()) {
orderPO.setAuditTime(now);
orderPO.setAllocateTime(now);
}
orderSaveList.add(orderPO);
// //没有审核通过的工单变成待审核状态,进入工单系统,手工审核
// if (Boolean.TRUE.equals(order.getSendWorkOrder())) {
// orderPO.setOrderStatus(RnrOrderStatusEnum.ASSIGNMENT.getCode());
// failedOrderDTOS.add(order);
// }
// 存操作
orderOperationLogPO = new RnrOrderOperationLogPO();
orderOperationLogPO.setUuid(CuscStringUtils.generateUuid());
orderOperationLogPO.setCreator(orderPO.getCreator() == null ? "0" : orderPO.getCreator());
orderOperationLogPO.setOptType(RnrOptLogSubTypeEnum.CREATE_OPERATE.getCode());
orderOperationLogPO.setUpdatedCode(0L);
orderOperationLogPO.setUpdatedContent("本单由工号:" + orderPO.getCreator() + "创建");
orderOperationLogPO.setOptTime(now);
orderOperationLogPO.setOrderId(orderPO.getUuid());
orderOperationLogPO.setTenantNo(orderPO.getTenantNo());
orderOperationLogPO.setRnrId(orderPO.getRnrId());
orderLogList.add(orderOperationLogPO);
}
baseMapper.insertBatchOrder(orderSaveList);
rnrOrderOperationLogService.insertBatchOrderOperationLog(orderLogList);
// sendOrderSystem(failedOrderDTOS);
return orderSaveList.size();
}
@Override
public void sendThirdBatchOrder(List<RnrOrderDTO> orderList) {
}
/**
* 通知工单系统
*/
@Override
public void sendOrderSystem(RnrOrderDTO rnrOrderDTO, MgRnrInfoDTO mgRnrInfoDTO, List<MgRnrCardInfoDTO> list) {
if("0".equals(sendOrderSystemFlag)){
log.info("work order begin local verify mode, dont send rnrOrderSystem");
return;
}
String name = DesensitizationUtil.desensitizeName(mgRnrInfoDTO.getFullName());
String phone = DesensitizationUtil.desensitizePhone(mgRnrInfoDTO.getPhone());
WorkOrderStarRequestDTO orderStarRequestDTO;
if(CollectionUtils.isEmpty(list)){
orderStarRequestDTO = orderDtoToWorkOrderDTO(rnrOrderDTO,name,phone,"","");
}else{
MgRnrCardInfoDTO mgRnrCardInfoDTO = list.get(0);
boolean notSingle = list.size() > 1;
String vin = notSingle ? mgRnrCardInfoDTO.getIotId()+",..." : mgRnrCardInfoDTO.getIotId();
String iccid = notSingle ? mgRnrCardInfoDTO.getIccid()+",..." : mgRnrCardInfoDTO.getIccid();
orderStarRequestDTO = orderDtoToWorkOrderDTO(rnrOrderDTO,name,phone,vin,iccid);
}
// for (RnrOrderDTO rnrOrderDTO : orderList) {
log.info("发送工单:{}", JSON.toJSONString(orderStarRequestDTO));
String workOrderCode = workOrderContext.getHandler().startOrder(orderStarRequestDTO);
if (!StringUtils.isBlank(workOrderCode)) {
this.baseMapper.updateOrderApproveNo(rnrOrderDTO.getUuid(), workOrderCode);
} else {
log.error("发送工单系统失败,订单UUID:" + rnrOrderDTO.getUuid());
throw new CuscUserException("", "发送工单系统失败");
}
// }
}
/**
* 更新工单状态
*/
@Override
@Transactional
public void updateOrderStatus(List<String> orderIds, int status) {
this.baseMapper.updateOrderStatus(orderIds, status);
}
//转换工单
private WorkOrderStarRequestDTO orderDtoToWorkOrderDTO(RnrOrderDTO rnrOrderDTO,String... args) {
WorkOrderStarRequestDTO requestDTO = new WorkOrderStarRequestDTO();
requestDTO.setBusinessObjectId(rnrOrderDTO.getUuid());
requestDTO.setTenantUuid(rnrOrderDTO.getTenantNo());
RnrOrderType typeByCode = RnrOrderType.getTypeByCode(rnrOrderDTO.getOrderType());
if (typeByCode == null) {
throw new CuscUserException("", "工单类型错误");
}
WorkOrderTypeEnum workOrderTypeEnum
= WorkOrderTypeEnum.getWorkOrderTypeEnumByRnrOrderType(typeByCode);
requestDTO.setWorkOrderKey(workOrderTypeEnum.getKey());
requestDTO.setName(workOrderTypeEnum.getWorkOrderName(args));
requestDTO.setStartUserId(rnrOrderDTO.getCreator());
requestDTO.setApplicationUuid(applicationId);
return requestDTO;
}
/**
* 通过UUID查询单条数据
*
* @param uuid
* @return 实例对象
*/
public RnrOrderPO getPoByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
return this.getOne(queryWrapper);
}
public Integer orderTotal(LocalVerifyListRqDTO rq) {
return rnrOrderDao.orderTotal(rq);
}
public List<LocalVerifyListDTO> orderList(LocalVerifyListRqDTO rq) {
return rnrOrderDao.orderList(rq, (rq.getCurrPage() - 1) * rq.getPageSize(), rq.getPageSize());
}
@Override
public String getOrganNameForOrgId(String orgId){
return rnrOrderDao.getOrganNameForOrgId(orgId);
}
@Override
public String getOrganNameForOrganCode(String organCode){
return rnrOrderDao.getOrganNameForOrganCode(organCode);
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.alibaba.fastjson.JSON;
import com.cache.CacheFactory;
import com.cache.exception.CacheException;
import com.cache.redis.util.FastJsonUtils;
import com.cusc.nirvana.common.loader.CollectionUtils;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.eiam.dto.OrganizationDTO;
import com.cusc.nirvana.user.exception.CuscUserException;
import com.cusc.nirvana.user.rnr.common.constants.RedisConstant;
import com.cusc.nirvana.user.rnr.common.constants.ResponseCode;
import com.cusc.nirvana.user.rnr.mg.constants.NoticeStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.PassCodeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrBizzTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogBizTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogOptTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOptLogSubTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderAuditTypeEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderSourceEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderType;
import com.cusc.nirvana.user.rnr.mg.constants.RnrResponseCode;
import com.cusc.nirvana.user.rnr.mg.constants.RnrStatus;
import com.cusc.nirvana.user.rnr.mg.converter.MgRnrCardInfoConverter;
import com.cusc.nirvana.user.rnr.mg.dao.OrgSimRelDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.MgRnrCardInfoPO;
import com.cusc.nirvana.user.rnr.mg.dao.entity.MgRnrOperationLogPO;
import com.cusc.nirvana.user.rnr.mg.dto.InfoLogCommentDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgCardNoticeDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrCompanyInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrFileDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrLiaisonInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrRelationDTO;
import com.cusc.nirvana.user.rnr.mg.service.*;
import com.cusc.nirvana.user.rnr.mg.util.RnrOrderUtil;
import com.cusc.nirvana.user.rnr.mg.util.SpringValidationUtil;
import com.cusc.nirvana.user.rnr.mg.validation.group.SaveRelation;
import com.cusc.nirvana.user.util.CuscStringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.validation.ConstraintViolation;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
* Description: 实名关系service
* <br />
* CreateDate 2022-01-26 10:36:27
*
* @author yuyi
**/
@Service
@Slf4j
public class RnrRelationServiceImpl implements IRnrRelationService {
@Autowired
private IRnrOrderService rnrOrderService;
@Autowired
private IMgRnrInfoService rnrInfoService;
@Autowired
private IMgRnrCardInfoService rnrCardInfoService;
@Autowired
private IMgRnrCompanyInfoService rnrCompanyInfoService;
@Autowired
private IMgRnrTagService rnrTagService;
@Autowired
private IMgRnrLiaisonInfoService rnrLiaisonInfoService;
@Autowired
private IMgRnrFileService rnrFileService;
@Resource
private CacheFactory cacheFactory;
@Autowired
private IMgRnrOperationLogService rnrOperationLogService;
@Autowired
@Lazy
private IMgRnrCardNoticeService cardNoticeService;
@Autowired
private IProjectService projectService;
@Autowired
private IMgRnrCompanyInfoService mgRnrCompanyInfoService;
@Autowired
private ICiamService ciamService;
@Autowired
private IOrganService organService;
@Resource
private OrgSimRelDao orgSimRelDao;
@Resource
private IRnrUnboundService unboundService;
@Resource
private IOrgSimRelService iOrgSimRelService;
@Override
@Transactional
public Response saveRnrRelation(RnrRelationDTO bean) {
log.info("Mg realtionInfo:" + JSON.toJSONString(bean));
if (CollectionUtils.isEmpty(bean.getCardList())) {
return Response.createError(ResponseCode.ICCID_NOT_NULL.getMsg(), ResponseCode.ICCID_NOT_NULL.getCode());
}
try {
unboundService.checkUnBindVehicle(bean);
} catch (CuscUserException e) {
throw e;
} catch (Exception e) {
log.error("checkUnBindVehicle has error orderId = {}", bean.getOrder().getUuid(), e);
}
MgRnrInfoDTO info = bean.getInfo();
RnrOrderDTO order = bean.getOrder();
// //通过证件号查询路由键
// Response<Long> routingKeyResp = systemRoutingService.getOrCreateRoutingKey(info.getCertNumber());
// if (routingKeyResp == null || !routingKeyResp.isSuccess()) {
// return routingKeyResp;
// }
// info.setRoutingKey(routingKeyResp.getData());
//设置订单信息
order.setRnrId(info.getUuid());
// order.setRoutingKey(routingKeyResp.getData());
/*order.setFinalApproveTime(new Date(System.currentTimeMillis() + DateUtils.stringHourToMills(RnrConstants.DEFAULT_AUDIT_TIME)));*/
if (order.isAutoRnr()) {
order.setUpdatedCode(PassCodeEnum.AUTO_SUCC.getCode());
if (order.getOrderType().intValue() == RnrOrderType.REBINDING.getCode()) {
order.setOldOrderStatus(RnrOrderStatusEnum.PASS.getCode());
}
order.setAuditType(RnrOrderAuditTypeEnum.AUTO.getCode());
} /*else {
order.setAuditType(RnrOrderAuditTypeEnum.MANUAL.getCode());
order.setOrderStatus(RnrOrderStatusEnum.ASSIGNMENT.getCode());
info.setRnrStatus(RnrStatus.INIT.getCode());
}*/
//todo 改为项目配置
//String hour = brandRepo.findFinalApproveHourByBrandId(brandId);
//if (StringUtils.isBlank(hour)) {
// hour = CuscRnrConstants.DEFAULT_AUDIT_TIME;
//}
//查询车企信息
OrganizationDTO organ = new OrganizationDTO();
organ.setTenantNo(info.getTenantNo());
organ.setUuid(info.getOrgId());
Response<OrganizationDTO> organResp = organService.getCarSubOrganByOrgId(organ);
if(organResp == null || !organResp.isSuccess() || organResp.getData() == null){
return Response.createError(ResponseCode.CAR_SUB_ORGAN_NOT_FOUND.getMsg(), ResponseCode.CAR_SUB_ORGAN_NOT_FOUND.getCode());
}
InfoLogCommentDTO comment = new InfoLogCommentDTO();
comment.setUserId(info.getUuid());
comment.setLang(LocaleContextHolder.getLocale().toString());
String logComment = FastJsonUtils.convertObjectToJSON(comment);
//组装卡信息
List<MgRnrCardInfoPO> cardPOList = new ArrayList<>();
MgRnrCardInfoPO cardInfoPO;
//日志信息
List<MgRnrOperationLogPO> cardLogList = new ArrayList<>();
MgRnrOperationLogPO rnrOptLog;
//mq消息
List<MgCardNoticeDTO> mqList = new ArrayList<>();
MgCardNoticeDTO mqDTO;
List<MgRnrCardInfoDTO> mgRnrCardInfoDTOList = new ArrayList<>();
MgRnrCardInfoDTO mgRnrCardInfoDTO = new MgRnrCardInfoDTO();
for (MgRnrCardInfoDTO cardDTO : bean.getCardList()) {
mgRnrCardInfoDTO.setIccid(cardDTO.getIccid());
mgRnrCardInfoDTO.setIotId(cardDTO.getIotId());
mgRnrCardInfoDTOList.add(mgRnrCardInfoDTO);
//设置卡信息
cardDTO.setUuid(CuscStringUtils.generateUuid());
cardDTO.setRnrId(info.getUuid());
cardDTO.setTenantNo(info.getTenantNo());
cardDTO.setRoutingKey(info.getRoutingKey());
cardDTO.setNoticeStatus(NoticeStatusEnum.NONEED.getCode());
cardDTO.setOrderId(order.getUuid());
//设置日志信息
rnrOptLog = new MgRnrOperationLogPO();
rnrOptLog.setUuid(CuscStringUtils.generateUuid());
rnrOptLog.setBizType(RnrOptLogBizTypeEnum.CARD.getCode());
rnrOptLog.setBizUuid(cardDTO.getUuid());
rnrOptLog.setOptType(RnrOptLogOptTypeEnum.OPERATE_RNR.getCode());
rnrOptLog.setOptSubType(order.getAuditType().intValue() == RnrOrderAuditTypeEnum.AUTO.getCode() ?
RnrOptLogSubTypeEnum.AUTO_ACCESS_OPERATE.getCode() :
RnrOptLogSubTypeEnum.RNR_SHIFT_TO_ARTIFICIAL.getCode());
rnrOptLog.setOptTime(new Date());
rnrOptLog.setContent(logComment);
rnrOptLog.setIsBatchOrder(order.getIsBatchOrder());
rnrOptLog.setSource(order.getOrderSource());
rnrOptLog.setSerialNumber(order.getSerialNumber());
rnrOptLog.setCreator(info.getCreator());
rnrOptLog.setTenantNo(order.getTenantNo());
cardLogList.add(rnrOptLog);
//不发送工单系统,则表示自动审核,需要发送mq
if (!order.getSendWorkOrder() && RnrOrderStatusEnum.PASS.getCode().equals(bean.getOrder().getOrderStatus())) {
cardDTO.setNoticeStatus(NoticeStatusEnum.NEED.getCode());
cardDTO.setRnrStatus(RnrOrderUtil.orderTypeToRnrStatus(order.getOrderType()).getCode());
//设置消息信息
mqDTO = new MgCardNoticeDTO();
mqDTO.setVin(cardDTO.getIotId());
mqDTO.setRnrBizzType(RnrOrderUtil.orderTypeToNoticeType(order.getOrderType()).getCode());
mqDTO.setOrderId(cardDTO.getOrderId());
mqDTO.setIccid(cardDTO.getIccid());
mqDTO.setManufacturerOrgId(organResp.getData().getUuid());
mqDTO.setResultCode(bean.getOrder().getOrderStatus());
mqDTO.setTenantNo(info.getTenantNo());
mqDTO.setOrgId(info.getOrgId());
mqList.add(mqDTO);
} else {
cardDTO.setRnrStatus(RnrStatus.INIT.getCode());
}
cardDTO.setRnrId(info.getUuid());
cardInfoPO = MgRnrCardInfoConverter.INSTANCE.dtoToPo(cardDTO);
cardPOList.add(cardInfoPO);
}
//保存实名表数据
rnrInfoService.insert(info);
//保存卡信息
rnrCardInfoService.addRnrCardBatch(cardPOList);
//保存tag信息
if (CollectionUtils.isNotEmpty(bean.getRnrTagList())) {
rnrTagService.addRnrTagFromRnrInfo(info, bean.getRnrTagList());
}
//保存联系人信息
if (CollectionUtils.isNotEmpty(bean.getRnrLiaisonList())) {
rnrLiaisonInfoService.addRnrLiaisonFromRnrInfo(info, bean.getRnrLiaisonList());
}
//保存公司信息
if (bean.getCompanyInfo() != null) {
mgRnrCompanyInfoService.insert(bean.getCompanyInfo());
}
//保存图片信息
rnrFileService.addRnrFileFromInfo(info, bean.getRnrFileList());
//保存工单信息
rnrOrderService.insertOrder(order);
//发送工单系统
if (order.getSendWorkOrder()) {
rnrOrderService.sendOrderSystem(order, info, bean.getCardList());
}
// mq发送工单
// rnrOrderService.sendBatchOrderMQ(orderList, Integer.parseInt(order.getOrderDelay()));
//保存操作日志-异步
rnrOperationLogService.addRnrOperationLogPOBatch(cardLogList);
//非委托人模式,自然人新车和二手车成功需要创建用户
if (!bean.getOrder().getSendWorkOrder() && RnrOrderUtil.needCreateUser(bean.getInfo(), bean.getOrder()) && !RnrOrderSourceEnum.H5_CUSTOMER.getCode().equals(bean.getOrder().getOrderSource())) {
ciamService.createUser(bean.getInfo());
}
//异步发送审核成功消息
if (CollectionUtils.isNotEmpty(mqList)) {
//如果是绑定或者解绑需要做一下数据更新处理
if(RnrBizzTypeEnum.Bind.getCode().equals(order.getRnrBizzType())||RnrBizzTypeEnum.ChangeBinding.getCode().equals(order.getRnrBizzType())){
iOrgSimRelService.updateVin(mgRnrCardInfoDTOList);
}
cardNoticeService.sendCardNotice(mqList);
}
return Response.createSuccess();
}
@Override
public Response syncRnrRelation(RnrRelationDTO bean) {
log.info("Mg syncRnrRelation:" + JSON.toJSONString(bean));
if (CollectionUtils.isEmpty(bean.getCardList())) {
return Response.createError(ResponseCode.ICCID_NOT_NULL.getMsg(), ResponseCode.ICCID_NOT_NULL.getCode());
}
MgRnrInfoDTO info = bean.getInfo();
RnrOrderDTO order = bean.getOrder();
//组装卡信息
List<MgRnrCardInfoPO> cardPOList = new ArrayList<>();
for (MgRnrCardInfoDTO cardDTO : bean.getCardList()) {
//设置卡信息
cardDTO.setUuid(CuscStringUtils.generateUuid());
cardDTO.setRnrId(info.getUuid());
cardDTO.setTenantNo(info.getTenantNo());
cardDTO.setRoutingKey(info.getRoutingKey());
cardDTO.setNoticeStatus(NoticeStatusEnum.NONEED.getCode());
cardDTO.setOrderId(order.getUuid());
cardDTO.setRnrStatus(info.getRnrStatus());
MgRnrCardInfoPO cardInfoPO = MgRnrCardInfoConverter.INSTANCE.dtoToPo(cardDTO);
cardPOList.add(cardInfoPO);
}
//保存实名表数据
rnrInfoService.insert(info);
//保存工单信息
rnrOrderService.insertOrder(order);
//保存卡信息
rnrCardInfoService.addRnrCardBatch(cardPOList);
//保存tag信息
if (CollectionUtils.isNotEmpty(bean.getRnrTagList())) {
rnrTagService.addRnrTagFromRnrInfo(info, bean.getRnrTagList());
}
//保存联系人信息
if (CollectionUtils.isNotEmpty(bean.getRnrLiaisonList())) {
rnrLiaisonInfoService.addRnrLiaisonFromRnrInfo(info, bean.getRnrLiaisonList());
}
//保存公司信息
if (bean.getCompanyInfo() != null) {
mgRnrCompanyInfoService.insert(bean.getCompanyInfo());
}
//保存图片信息
rnrFileService.addRnrFileFromInfo(info, bean.getRnrFileList());
//非委托人模式,自然人新车和二手车成功需要创建用户
if (!bean.getOrder().getSendWorkOrder() && RnrOrderUtil.needCreateUser(bean.getInfo(), bean.getOrder()) && CuscStringUtils.isEmpty(bean.getInfo().getUserId()) && !RnrOrderSourceEnum.H5_CUSTOMER.getCode().equals(bean.getOrder().getOrderSource())) {
ciamService.createUser(bean.getInfo());
}
return Response.createSuccess("同步实名信息成功");
}
@Override
public void lockRnrIccid(String tenantNo, String iccid, String value) {
boolean lockStatus = true;
try {
lockStatus = cacheFactory.getLockService()
.setNx(RedisConstant.RNR_LOCK + tenantNo + ":" + iccid, value, RedisConstant.RNR_LOCK_TIME);
} catch (CacheException e) {
log.error("RnrRelationServiceImpl.lockRnrIccid 加锁失败,tenantNo: " + tenantNo + ",iccid: " + iccid +
",value: " + value + ". ", e);
}
//锁定失败
if (!lockStatus) {
throw new CuscUserException(RnrResponseCode.WAIT_CHECK.getCode(),
RnrResponseCode.WAIT_CHECK.getDescription());
}
}
@Override
public void lockRnrIccidList(String tenantNo, List<String> iccidList, String value) {
for (String iccid : iccidList) {
lockRnrIccid(tenantNo, iccid, value);
}
}
@Override
public void unLockRnrIccid(String tenantNo, String iccid) {
try {
cacheFactory.getLockService().delete(RedisConstant.RNR_LOCK + tenantNo + ":" + iccid);
} catch (CacheException e) {
log.error("RnrRelationServiceImpl.unLockRnrIccid 解锁失败,tenantNo: " + tenantNo + ",iccid: " + iccid + ". ",
e);
}
}
@Override
public void unLockRnrIccidList(String tenantNo, List<String> iccidList) {
for (String iccid : iccidList) {
unLockRnrIccid(tenantNo, iccid);
}
}
@Override
public void checkIccidStatus(String tenantNo, List<String> iccidList) {
MgRnrCardInfoDTO checkCardDTO = new MgRnrCardInfoDTO();
checkCardDTO.setTenantNo(tenantNo);
checkCardDTO.setIccidList(iccidList);
boolean ret = rnrCardInfoService.checkIccidExists(checkCardDTO);
if (ret) {
// 如果是待审核或待人工审核则抛出,已提交申请异常
throw new CuscUserException(RnrResponseCode.WAIT_CHECK.getCode(),
RnrResponseCode.WAIT_CHECK.getDescription());
}
}
@Override
public Response<RnrRelationDTO> getRnrRelation(MgRnrCardInfoDTO bean) {
RnrRelationDTO rnrRelationDTO = new RnrRelationDTO();
MgRnrCardInfoDTO mgRnrCardInfoDTO = new MgRnrCardInfoDTO();
mgRnrCardInfoDTO.setIccid(bean.getIccid());
mgRnrCardInfoDTO.setTenantNo(bean.getTenantNo());
mgRnrCardInfoDTO = rnrCardInfoService.getNewRnrCardByIccid(mgRnrCardInfoDTO);
if (mgRnrCardInfoDTO == null) {
return Response.createError("未查询到已实名的卡信息");
}
rnrRelationDTO.setCardList(Arrays.asList(mgRnrCardInfoDTO));
//查询实名信息
MgRnrInfoDTO mgRnrInfoDTO = new MgRnrInfoDTO();
mgRnrInfoDTO.setUuid(mgRnrCardInfoDTO.getRnrId());
MgRnrInfoDTO byUuid = rnrInfoService.getByUuid(mgRnrInfoDTO);
rnrRelationDTO.setInfo(byUuid);
if (byUuid != null && byUuid.getIsCompany() != 0 && CuscStringUtils.isNotEmpty(byUuid.getRnrCompanyId())) {
MgRnrCompanyInfoDTO rnrCompanyInfoDTO = new MgRnrCompanyInfoDTO();
rnrCompanyInfoDTO.setUuid(byUuid.getRnrCompanyId());
MgRnrCompanyInfoDTO mgRnrCompanyInfoDTO = rnrCompanyInfoService.getByUuid(rnrCompanyInfoDTO);
rnrRelationDTO.setCompanyInfo(mgRnrCompanyInfoDTO);
}
//查询联系人信息
MgRnrLiaisonInfoDTO rnrLiaisonInfoDTO = new MgRnrLiaisonInfoDTO();
rnrLiaisonInfoDTO.setRnrId(mgRnrCardInfoDTO.getRnrId());
rnrLiaisonInfoDTO.setTenantNo(mgRnrCardInfoDTO.getTenantNo());
List<MgRnrLiaisonInfoDTO> liaisonInfoList = rnrLiaisonInfoService.queryByList(rnrLiaisonInfoDTO);
rnrRelationDTO.setRnrLiaisonList(liaisonInfoList);
//查询文件信息
MgRnrFileDTO fileDTO = new MgRnrFileDTO();
fileDTO.setRnrId(mgRnrCardInfoDTO.getRnrId());
fileDTO.setTenantNo(bean.getTenantNo());
rnrRelationDTO.setRnrFileList(rnrFileService.getByRnrid(fileDTO));
return Response.createSuccess(rnrRelationDTO);
}
//----------------私有方法区-----------------
/**
* 参数验证是否有效
* 只能使用Spring Validate做基础校验,NotNull,NotEmpty,Max,Min等
*
* @param bean
* @return
*/
private Response checkDTOValid(RnrRelationDTO bean) {
Set<ConstraintViolation<RnrRelationDTO>> constraintViolations =
SpringValidationUtil.groupVerificationParameters(bean, SaveRelation.class);
if (!constraintViolations.isEmpty()) {
String message = constraintViolations.stream().findFirst()
.get().getMessage();
return Response.createError(message, ResponseCode.INVALID_DATA.getCode());
}
return Response.createSuccess();
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.cusc.nirvana.user.rnr.mg.constants.NoticeStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderSourceEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum;
import com.cusc.nirvana.user.rnr.mg.constants.RnrStatus;
import com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO;
import com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO;
import com.cusc.nirvana.user.rnr.mg.service.ICiamService;
import com.cusc.nirvana.user.rnr.mg.service.IMgRnrCardInfoService;
import com.cusc.nirvana.user.rnr.mg.service.IMgRnrCardNoticeService;
import com.cusc.nirvana.user.rnr.mg.service.IMgRnrInfoService;
import com.cusc.nirvana.user.rnr.mg.service.IRnrOrderService;
import com.cusc.nirvana.user.rnr.mg.service.IRnrResultProcessService;
import com.cusc.nirvana.user.rnr.mg.util.RnrOrderUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
/**
* @author stayAnd
* @date 2022/5/5
*/
@Service
@Slf4j
public class RnrResultProcessServiceImpl implements IRnrResultProcessService {
@Resource
private IRnrOrderService orderService;
@Resource
@Lazy
private IMgRnrCardNoticeService cardNoticeService;
@Resource
private IMgRnrInfoService mgRnrInfoService;
@Resource
private IMgRnrCardInfoService cardInfoService;
@Autowired
private ICiamService ciamService;
@Override
public void processRnrResult(String orderId, String rnrId, RnrOrderStatusEnum statusEnum,String content) {
//更新状态
saveStatus(orderId, rnrId, statusEnum,content);
//发送通知
if (statusEnum == RnrOrderStatusEnum.PASS) {
saveUser(orderId,rnrId);
}
log.info("开始发送实名成功mq,order:{}",orderId);
cardNoticeService.sendCardNoticeByOrderId(orderId);
}
//创建用户
private void saveUser(String orderId, String rnrId) {
MgRnrInfoDTO mgRnrInfoDTO = new MgRnrInfoDTO();
mgRnrInfoDTO.setUuid(rnrId);
mgRnrInfoDTO = mgRnrInfoService.getByUuid(mgRnrInfoDTO);
RnrOrderDTO rnrOrderDTO = new RnrOrderDTO();
rnrOrderDTO.setUuid(orderId);
rnrOrderDTO = orderService.getByUuid(rnrOrderDTO);
if(mgRnrInfoDTO != null && rnrOrderDTO != null){
if(!RnrOrderSourceEnum.H5_CUSTOMER.equals(rnrOrderDTO.getOrderSource()) && RnrOrderUtil.needCreateUser(mgRnrInfoDTO,rnrOrderDTO)){
ciamService.createUser(mgRnrInfoDTO);
}
}
}
private void saveStatus(String orderId, String rnrId, RnrOrderStatusEnum statusEnum,String content) {
//更新订单状态
//orderService.updateOrderStatus(Collections.singletonList(orderId), statusEnum.getCode());
RnrOrderDTO updateOrder = new RnrOrderDTO();
updateOrder.setUuid(orderId);
updateOrder.setOrderStatus(statusEnum.getCode());
updateOrder.setComment(content);
updateOrder.setAuditTime(new Date());
updateOrder.setFinalApproveTime(new Date());
orderService.update(updateOrder);
if (statusEnum == RnrOrderStatusEnum.PASS) {
//审核通过
//更新rnr状态
mgRnrInfoService.updateRnrStatus(rnrId, RnrStatus.RNR);
//更新订单状态
cardInfoService.updateCardStatusByOrderId(orderId, NoticeStatusEnum.NEED.getCode(), RnrStatus.RNR.getCode());
} else {
//更新rnr状态
mgRnrInfoService.updateRnrStatus(rnrId, RnrStatus.RNR_FAIL);
//更新订单状态
cardInfoService.updateCardStatusByOrderId(orderId, NoticeStatusEnum.NONEED.getCode(), RnrStatus.RNR_FAIL.getCode());
}
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cusc.nirvana.common.result.Response;
import com.cusc.nirvana.user.exception.CuscUserException;
import com.cusc.nirvana.user.rnr.common.constants.ResponseCode;
import com.cusc.nirvana.user.rnr.mg.constants.*;
import com.cusc.nirvana.user.rnr.mg.converter.MgRnrCardInfoConverter;
import com.cusc.nirvana.user.rnr.mg.dto.*;
import com.cusc.nirvana.user.rnr.mg.service.*;
import com.cusc.nirvana.user.util.CuscStringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Description: 通用实名解绑service
* <br />
* CreateDate 2022-01-26 10:36:27
*
* @author yuyi
**/
@Service
@Slf4j
public class RnrUnboundServiceImpl implements IRnrUnboundService {
@Autowired
private IMgRnrInfoService rnrInfoService;
@Autowired
private IMgRnrCardInfoService rnrCardInfoService;
@Autowired
private IRnrOrderService orderService;
@Autowired
@Lazy
private IMgRnrCardNoticeService cardNoticeService;
@Autowired
private IOrganService organService;
@Autowired
private IRnrRelationService relationService;
@Resource
private IMgRnrCompanyInfoService companyInfoService;
/**
* 通用实名解绑
*
* @param bean 参数体
* @return
*/
@Override
@Transactional
public Response rnrUnbound(RnrUnbindDTO bean) {
//判断vin号是否为空
if (StringUtils.isBlank(bean.getIccid())) {
return Response.createError(ResponseCode.ICCID_NOT_NULL.getMsg(), ResponseCode.ICCID_NOT_NULL.getCode());
}
List<MgCardNoticeDTO> noticeDTOS = new ArrayList<>();
List<MgRnrCardInfoDTO> cardInfoDTOS = new ArrayList<>();
//查询ICCID对应的用户,并判断用户信息和传入的是否一致
Response response = checkCardAndRnrInfo(bean, cardInfoDTOS, noticeDTOS);
if (!response.isSuccess()) {
return response;
}
//查询不到需要解绑的信息
if (noticeDTOS.isEmpty()) {
return Response.createError(ResponseCode.ICCID_RNR_INFO_NOT_MATCHED.getMsg(), ResponseCode.ICCID_RNR_INFO_NOT_MATCHED.getCode());
}
//card表设置成解绑状态
List<String> uuids = cardInfoDTOS.stream().map(MgRnrCardInfoDTO::getUuid).collect(Collectors.toList());
// List<String> rnrids = cardInfoDTOS.stream().map(MgRnrCardInfoDTO::getRnrId).collect(Collectors.toList());
rnrCardInfoService.unboundCardBatch(uuids, RnrStatus.UNBOUND);
// rnrInfoService.updateRnrStatusBatch(rnrids, RnrStatus.UNBOUND);
//异步发送解绑消息
cardNoticeService.sendCardNotice(noticeDTOS);
return Response.createSuccess();
}
@Override
@Transactional
public Response batchUnbound(VehicleUnbindDTO bean) {
log.info("车企实名解绑:{}", JSON.toJSONString(bean));
//原card表设置成解绑状态
List<String> cardIds = bean.getCardIds();
rnrCardInfoService.unboundCardBatch(cardIds, RnrStatus.UNBOUND);
orderService.updateOrderStatus(Collections.singletonList(bean.getOrder().getUuid()),
RnrOrderStatusEnum.PASS.getCode());
//保存实名解绑数据 并发送通知
Response response = relationService.saveRnrRelation(bean);
if (!response.isSuccess()) {
throw new CuscUserException(response.getCode(), response.getMsg());
}
return response;
}
/**
* 二手车解绑
*
* @param bean
* @return
*/
@Override
public Response secondHandUnBound(RnrRelationDTO bean) {
return relationService.saveRnrRelation(bean);
}
/**
* 用户信息和传入的一致的加入解绑列表
*/
private Response checkCardAndRnrInfo(RnrUnbindDTO bean, List<MgRnrCardInfoDTO> cardInfoDTOS, List<MgCardNoticeDTO> noticeDTOS) {
//根据ICCID查询卡信息
MgRnrCardInfoDTO parm = new MgRnrCardInfoDTO();
parm.setIccid(bean.getIccid());
List<MgRnrCardInfoDTO> mgRnrCardInfoDTOS = rnrCardInfoService.getListByIccid(parm);
for (MgRnrCardInfoDTO cardInfoDTO : mgRnrCardInfoDTOS) {
//查询实名信息
String rnrId = cardInfoDTO.getRnrId();
MgRnrInfoDTO mgRnrInfoDTO = new MgRnrInfoDTO();
mgRnrInfoDTO.setUuid(rnrId);
mgRnrInfoDTO = rnrInfoService.getByUuid(mgRnrInfoDTO);
//判断是否加入解绑列表
//卡是实名状态
//用户姓名、证件号、证件类型和传入的一致
if (cardInfoDTO.getRnrStatus() == RnrStatus.RNR.getCode()
&& StringUtils.equals(mgRnrInfoDTO.getFullName(), bean.getFullName())
&& StringUtils.equals(mgRnrInfoDTO.getCertNumber(), bean.getCertNumber())
&& StringUtils.equals(mgRnrInfoDTO.getCertType(), bean.getCertType())) {
//加入解绑列表
cardInfoDTOS.add(cardInfoDTO);
//解绑通知消息
MgCardNoticeDTO mgCardNoticeDTO = MgRnrCardInfoConverter.INSTANCE.unboundDTOtoNoticeDTO(bean);
//mgCardNoticeDTO.setOperationType(RnrBizzTypeEnum.Unbound.getCode());
//mgCardNoticeDTO.setRnrId(mgRnrInfoDTO.getUuid());
mgCardNoticeDTO.setRnrBizzType(RnrBizzTypeEnum.Unbound.getCode());
mgCardNoticeDTO.setOrderId(cardInfoDTO.getOrderId());
//添加项目ID
//Response<ProjectNumResponseDTO> responseDTOResponse = projectService.findProjectNoByIccid(mgCardNoticeDTO.getIccid());
//if (!responseDTOResponse.isSuccess()) {
// return responseDTOResponse;
//}
//mgCardNoticeDTO.setProjectNum(responseDTOResponse.getData().getProjectNum());
noticeDTOS.add(mgCardNoticeDTO);
}
}
return Response.createSuccess();
}
@Override
public void checkUnBindVehicle(RnrRelationDTO bean) {
Integer orderType = bean.getOrder().getOrderType();
if (!orderType.equals(RnrOrderType.NEW_VEHICLE.getCode())
&& !orderType.equals(RnrOrderType.SEC_VEHICLE.getCode())
&& !orderType.equals(RnrOrderType.COMPANY_NEW_VEHICLE.getCode())) {
log.info("checkUnBindVehicle not orderType orderId = {}",bean.getOrder().getUuid());
return;
}
log.info("checkUnBindVehicle start orderId = {}",bean.getOrder().getUuid());
List<String> iccidList = bean.getCardList().stream().map(MgRnrCardInfoDTO::getIccid).distinct().collect(Collectors.toList());
MgRnrCardInfoDTO cardQuery = new MgRnrCardInfoDTO();
cardQuery.setIccidList(iccidList);
List<MgRnrCardInfoDTO> cardInfoDTOList = rnrCardInfoService.queryByList(cardQuery);
log.info("checkUnBindVehicle 查询到已经卡信息结果 orderId = {},cardInfoDTOList = {}",bean.getOrder().getUuid(),JSONObject.toJSONString(cardInfoDTOList));
if (CollectionUtils.isEmpty(cardInfoDTOList)) {
return;
}
List<String> rnrOrderIdList = cardInfoDTOList.stream()
.filter(card -> RnrStatus.RNR.getCode() == card.getRnrStatus())
.map(MgRnrCardInfoDTO::getOrderId)
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(rnrOrderIdList)) {
return;
}
RnrOrderDTO orderQuery = new RnrOrderDTO();
orderQuery.setUuidList(rnrOrderIdList);
orderQuery.setOrderType(RnrOrderType.CARMAKER_NEW_VEHICLE.getCode());
List<RnrOrderDTO> orderDTOList = orderService.queryByList(orderQuery);
log.info("checkUnBindVehicle 查询车企实名工单信息 orderId = {},orderDTOList = {}",bean.getOrder().getUuid(),JSONObject.toJSONString(orderDTOList));
if (CollectionUtils.isEmpty(orderDTOList)) {
return;
}
boolean tenantNoMatch = orderDTOList.stream().allMatch(order -> order.getTenantNo().equals(bean.getOrder().getTenantNo()));
if (!tenantNoMatch) {
throw new CuscUserException(ResponseCode.SYSTEM_ERROR.getCode(),"租户号不一致,不能覆盖车企实名");
}
//车企实名的工单
List<String> vehicleRnrOrderIdList = orderDTOList.stream().map(RnrOrderDTO::getUuid).collect(Collectors.toList());
//已经车企实名的卡
List<MgRnrCardInfoDTO> vehicleRnrCardList = cardInfoDTOList.stream().filter(card -> vehicleRnrOrderIdList.contains(card.getOrderId())).collect(Collectors.toList());
log.info("checkUnBindVehicle 查询车企实名卡信息 orderId = {},vehicleRnrCardList = {}",bean.getOrder().getUuid(),JSONObject.toJSONString(vehicleRnrCardList));
if (CollectionUtils.isEmpty(vehicleRnrCardList)){
return;
}
//解绑 已经车企实名的卡
VehicleUnbindDTO dto = transferToVehicleUnbindDTO(orderDTOList.get(0),vehicleRnrCardList);
dto.setCardIds(vehicleRnrCardList.stream().map(MgRnrCardInfoDTO::getUuid).distinct().collect(Collectors.toList()));
this.batchUnbound(dto);
}
private VehicleUnbindDTO transferToVehicleUnbindDTO(RnrOrderDTO orderDTO,List<MgRnrCardInfoDTO> bindCardList){
String rnrId = orderDTO.getRnrId();
//查询rnrInfo
MgRnrInfoDTO rnrInfoQuery = new MgRnrInfoDTO();
rnrInfoQuery.setUuid(rnrId);
MgRnrInfoDTO rnrInfo = rnrInfoService.getByUuid(rnrInfoQuery);
log.info("checkUnBindVehicle 查询实名信息单信息 orderId = {},rnrInfo = {}",orderDTO.getUuid(),JSONObject.toJSONString(rnrInfo));
//查询公司信息
MgRnrCompanyInfoDTO companyQuery = new MgRnrCompanyInfoDTO();
companyQuery.setRnrId(rnrId);
MgRnrCompanyInfoDTO companyInfo = companyInfoService.getByRnrid(companyQuery);
log.info("checkUnBindVehicle 查询公司信息 orderId = {},companyInfo = {}",orderDTO.getUuid(),JSONObject.toJSONString(companyInfo));
VehicleUnbindDTO vehicleUnbindDTO = new VehicleUnbindDTO();
vehicleUnbindDTO.setTenantNo(orderDTO.getTenantNo());
vehicleUnbindDTO.setIsTrust(0);
vehicleUnbindDTO.setIsSecondHandCar(0);
MgRnrInfoDTO vehicleUnbindInfo = new MgRnrInfoDTO();
BeanUtils.copyProperties(rnrInfo,vehicleUnbindInfo);
vehicleUnbindInfo.setSerial_number(CuscStringUtils.generateUuid());
vehicleUnbindInfo.setOperator("");
vehicleUnbindInfo.setCreator("");
vehicleUnbindInfo.setUuid(CuscStringUtils.generateUuid());
vehicleUnbindInfo.setUserId("");
vehicleUnbindInfo.setIsCompany(1);
vehicleUnbindInfo.setRnrStatus(RnrStatus.UNBOUND.getCode());
vehicleUnbindInfo.setRnrBizzType(RnrBizzTypeEnum.Unbound.getCode());
vehicleUnbindDTO.setInfo(vehicleUnbindInfo);
RnrOrderDTO rnrOrderDTO = new RnrOrderDTO();
rnrOrderDTO.setOrderType(RnrOrderType.COMPANY_CORPORATION_UNBIND.getCode());
rnrOrderDTO.setRnrId(vehicleUnbindInfo.getUuid());
rnrOrderDTO.setUuid(CuscStringUtils.generateUuid());
rnrOrderDTO.setTenantNo(vehicleUnbindInfo.getTenantNo());
rnrOrderDTO.setOperator("");
rnrOrderDTO.setCreator("");
rnrOrderDTO.setOrderSource(RnrOrderSourceEnum.PORTAL.getCode());
rnrOrderDTO.setSerialNumber(vehicleUnbindInfo.getSerial_number());
rnrOrderDTO.setIsBatchOrder(0);
rnrOrderDTO.setOrderStatus(RnrOrderStatusEnum.PASS.getCode());
rnrOrderDTO.setAutoRnr(true);
rnrOrderDTO.setAuditType(RnrOrderAuditTypeEnum.AUTO.getCode());
rnrOrderDTO.setSendWorkOrder(false);
rnrOrderDTO.setRnrBizzType(RnrBizzTypeEnum.Unbound.getCode());
rnrOrderDTO.setOrgId(vehicleUnbindInfo.getOrgId());
vehicleUnbindDTO.setOrder(rnrOrderDTO);
MgRnrCompanyInfoDTO mgRnrCompanyInfoDTO = new MgRnrCompanyInfoDTO();
BeanUtils.copyProperties(companyInfo,mgRnrCompanyInfoDTO);
mgRnrCompanyInfoDTO.setUuid(CuscStringUtils.generateUuid());
mgRnrCompanyInfoDTO.setRnrId(vehicleUnbindInfo.getUuid());
mgRnrCompanyInfoDTO.setRnrBizzType(RnrBizzTypeEnum.Unbound.getCode());
mgRnrCompanyInfoDTO.setCreator("");
mgRnrCompanyInfoDTO.setOperator("");
//是否是车企
mgRnrCompanyInfoDTO.setIndustryType("1");
vehicleUnbindDTO.setCompanyInfo(mgRnrCompanyInfoDTO);
List<MgRnrCardInfoDTO> cardList = bindCardList.stream().map(card -> {
MgRnrCardInfoDTO cardInfoDTO = new MgRnrCardInfoDTO();
cardInfoDTO.setOldCardId(card.getUuid());
cardInfoDTO.setUuid(CuscStringUtils.generateUuid());
cardInfoDTO.setIotId(card.getIotId());
cardInfoDTO.setIccid(card.getIccid());
cardInfoDTO.setRnrId(vehicleUnbindInfo.getUuid());
cardInfoDTO.setRnrStatus(RnrStatus.UNBOUND.getCode());
cardInfoDTO.setNoticeStatus(NoticeStatusEnum.NONEED.getCode());
cardInfoDTO.setSerial_number(vehicleUnbindInfo.getSerial_number());
cardInfoDTO.setOrderId(rnrOrderDTO.getUuid());
cardInfoDTO.setTenantNo(rnrOrderDTO.getTenantNo());
cardInfoDTO.setRnrBizzType(RnrBizzTypeEnum.Unbound.getCode());
cardInfoDTO.setCreator("");
cardInfoDTO.setOperator("");
return cardInfoDTO;
}).collect(Collectors.toList());
vehicleUnbindDTO.setCardList(cardList);
return vehicleUnbindDTO;
}
}
package com.cusc.nirvana.user.rnr.mg.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cusc.nirvana.common.result.PageResult;
import com.cusc.nirvana.rds.mybatis.PageHelper;
import com.cusc.nirvana.user.rnr.mg.constants.CommonDeleteEnum;
import com.cusc.nirvana.user.rnr.mg.converter.SimFileHistoryConverter;
import com.cusc.nirvana.user.rnr.mg.dao.SimFileHistoryDao;
import com.cusc.nirvana.user.rnr.mg.dao.entity.SimFileHistoryPO;
import com.cusc.nirvana.user.rnr.mg.dto.SimFileHistoryDTO;
import com.cusc.nirvana.user.rnr.mg.dto.SimFileHistoryQueryDTO;
import com.cusc.nirvana.user.rnr.mg.service.ISimFileHistoryService;
import com.cusc.nirvana.user.util.CuscStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Calendar;
@Service
public class SimFileHistoryServiceImpl extends ServiceImpl<SimFileHistoryDao, SimFileHistoryPO>
implements ISimFileHistoryService {
@Override
public SimFileHistoryDTO getByUuid(String uuid) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("uuid", uuid);
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
SimFileHistoryPO historyPO = this.getOne(queryWrapper);
return historyPO == null ? null : SimFileHistoryConverter.INSTANCE.poToDto(historyPO);
}
@Override
public PageResult<SimFileHistoryDTO> queryByPage(SimFileHistoryQueryDTO queryDTO) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("org_uuid", queryDTO.getOrgUuid());
queryWrapper.eq(null != queryDTO.getFileType(),"file_type", queryDTO.getFileType());
queryWrapper.gt(queryDTO.getStartCreateTime() != null,"create_time", queryDTO.getStartCreateTime());
queryWrapper.lt(queryDTO.getEndCreateTime() != null, "create_time", queryDTO.getEndCreateTime());
if (queryDTO.getStatus() != null) {
if (queryDTO.getStatus() != 2) {
queryWrapper.eq("status", queryDTO.getStatus());
queryWrapper.eq("error_count", 0);
} else {
queryWrapper.gt("error_count", 0);
}
}
queryWrapper.eq("is_delete", CommonDeleteEnum.NORMAL.getCode());
queryWrapper.orderByDesc("create_time");
Page<SimFileHistoryPO> historyPOPage = this.page(new Page<>(queryDTO.getCurrPage(), queryDTO.getPageSize()), queryWrapper);
return PageHelper.convert(historyPOPage, SimFileHistoryDTO.class);
}
@Override
public SimFileHistoryDTO insert(SimFileHistoryDTO historyDTO) {
historyDTO.setUuid(CuscStringUtils.generateUuid());
if (historyDTO.getErrorCount() > 0) {
historyDTO.setStatus(2);
}
SimFileHistoryPO simFileHistoryPO = SimFileHistoryConverter.INSTANCE.dtoToPo(historyDTO);
this.save(simFileHistoryPO);
return historyDTO;
}
@Override
public SimFileHistoryDTO update(SimFileHistoryDTO historyDTO) {
SimFileHistoryDTO bean = this.getByUuid(historyDTO.getUuid());
if (bean == null) {
return null;
}
historyDTO.setId(bean.getId());
if (historyDTO.getErrorCount() > 0) {
historyDTO.setStatus(2);
}
SimFileHistoryPO simFileHistoryPO = SimFileHistoryConverter.INSTANCE.dtoToPo(historyDTO);
this.updateById(simFileHistoryPO);
return historyDTO;
}
@Override
public boolean deleteById(String orgUuid, String uuid) {
SimFileHistoryDTO historyDTO = this.getByUuid(uuid);
if (historyDTO == null || !historyDTO.getOrgUuid().equals(orgUuid)) {
return false;
}
historyDTO.setIsDelete(1);
return this.updateById(SimFileHistoryConverter.INSTANCE.dtoToPo(historyDTO));
}
}
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