TpCCarBreakRuleServiceImpl.java 4.83 KB
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<PageBean<CarBreakRuleDTO>> queryCarBreakRuleForPage(CarBreakRuleRequest req) {
		PageBean<CarBreakRuleDTO> pageBean = new PageBean<>();
		PageInfo<TpCCarBreakRule> pageInfo =  tpCCarBreakRuleDao.queryCarBreakRuleForPage(req);
		PageBeanUtil.copyProperties(pageInfo,pageBean,CarBreakRuleDTO.class);
		if(pageBean != null && CollectionUtils.isNotEmpty(pageInfo.getList())){
			Map<String,String> 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<Boolean> 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<Boolean> 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<Boolean> uploadCarBreakRuleToThird(CarBreakRuleRequest req) {
		//先查询
		PageInfo<TpCCarBreakRule> pageInfo =  tpCCarBreakRuleDao.queryCarBreakRuleForPage(req);
		if(pageInfo == null ||CollectionUtils.isEmpty(pageInfo.getList())){
			throw new BizException(ErrorType.BIZ_ERROR,"暂无数据记录,请刷新重试!");
		}
		List<TpCCarBreakRule> 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);
	}


}