package com.zteits.park.biz.carbreak; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageInfo; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.park.dto.CarBreakRuleDTO; import com.zteits.clouds.api.dto.park.param.CarBreakRuleCheckRequest; import com.zteits.clouds.api.dto.park.param.CarBreakRuleRequest; import com.zteits.clouds.api.dto.pda.param.TpCCarBreakRuleRequest; import com.zteits.clouds.api.service.park.carbreak.TpCCarBreakRuleService; import com.zteits.park.dao.ParkingLotDao; import com.zteits.park.dao.TpCCarBreakAuditRecordDao; import com.zteits.park.dao.TpCCarBreakRuleDao; import com.zteits.park.domain.ParkingLot; import com.zteits.park.domain.TpCCarBreakAuditRecord; import com.zteits.park.domain.TpCCarBreakRule; import com.zteits.park.pagepager.PageBeanUtil; @Service("com.zteits.park.biz.carbreak.TpCCarBreakRuleServiceImpl") public class TpCCarBreakRuleServiceImpl implements TpCCarBreakRuleService{ @Autowired private TpCCarBreakRuleDao tpCCarBreakRuleDao; @Autowired private TpCCarBreakAuditRecordDao tpCCarBreakAuditRecordDao; @Autowired private ParkingLotDao parkingLotDao; @Override public BizResult> queryCarBreakRuleForPage(CarBreakRuleRequest req) { PageBean pageBean = new PageBean<>(); PageInfo pageInfo = tpCCarBreakRuleDao.queryCarBreakRuleForPage(req); PageBeanUtil.copyProperties(pageInfo,pageBean,CarBreakRuleDTO.class); if(pageBean != null && CollectionUtils.isNotEmpty(pageInfo.getList())){ Map plNoAndName = parkingLotDao.queryParkingLotByPlNos( pageInfo.getList() .stream() .map(car -> car.getPlNo()).collect(Collectors.toList()) ) .stream() .collect(Collectors.toMap(ParkingLot::getPlNo, ParkingLot::getPlName)); pageBean.getDataList().forEach(dto->{ if(StringUtils.isNotEmpty(dto.getPlNo())){ String name = plNoAndName.get(dto.getPlNo()); dto.setPlName(name); } }); } return new BizResult<>(pageBean); } @Override @Transactional public BizResult updateCarBreakRuleCheckStatus(CarBreakRuleCheckRequest req) { TpCCarBreakAuditRecord tpCCarBreakAuditRecord = new TpCCarBreakAuditRecord(); BeanUtils.copyProperties(req, tpCCarBreakAuditRecord); tpCCarBreakAuditRecord.setBreakId(req.getId()); tpCCarBreakAuditRecord.setCreateEmpId(req.getsOpId()+""); tpCCarBreakAuditRecord.setCreateEmpName(req.getsOpName()); //开始新增审核记录表 Boolean ins = tpCCarBreakAuditRecordDao.insertCarBreakAuditRecord(tpCCarBreakAuditRecord); if(!ins){ throw new BizException(ErrorType.BIZ_ERROR,"新增审核记录失败!"); } //开始修改违章审核状态 Boolean result = tpCCarBreakRuleDao.updateCarBreakRuleCheckStatus(req); return new BizResult<>(result); } @Override public BizResult saveCarBreakRule(TpCCarBreakRuleRequest carBreakRuleRequest) { TpCCarBreakRule tpCCarBreakRule = new TpCCarBreakRule(); BeanUtils.copyProperties(carBreakRuleRequest,tpCCarBreakRule); Integer num = tpCCarBreakRuleDao.insertSelective(tpCCarBreakRule); return new BizResult<>(num>0?true:false); } @Override @Transactional public BizResult uploadCarBreakRuleToThird(CarBreakRuleRequest req) { //先查询 PageInfo pageInfo = tpCCarBreakRuleDao.queryCarBreakRuleForPage(req); if(pageInfo == null ||CollectionUtils.isEmpty(pageInfo.getList())){ throw new BizException(ErrorType.BIZ_ERROR,"暂无数据记录,请刷新重试!"); } List list = pageInfo.getList(); for (TpCCarBreakRule tpCCarBreakRule : list) { //TODO 调用接口开始上传至第三方 CarBreakRuleCheckRequest request = new CarBreakRuleCheckRequest(); request.setId(tpCCarBreakRule.getId()); /**上报状态:0-未上传,1-已上传,2-上传失败*/ request.setUploadType(1); request.setModfiyDate(new Date()); request.setModfiyEmpId(req.getsOpId()+""); request.setModfiyEmpName(req.getsOpName()); Boolean result = tpCCarBreakRuleDao.updateCarBreakRuleCheckStatus(request); if(!result){ throw new BizException(ErrorType.BIZ_ERROR,"更新上传状态失败!"); } } return new BizResult<>(true); } }