/*
 * XzqhServiceImpl.java
 * 版权所有 © 2011-2017 北京神舟良实信息技术有限公司
 * Copyright © 2011-2017 All Rights Reserved    京ICP备13013562号
 *  created by lipenghe with LAPTOP-DPSC399A
 */
package com.unis.base.server.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.unis.base.common.vo.XzqhVO;
import com.unis.base.server.domain.XzqhDomain;
import com.unis.base.server.entity.XzqhDO;
import com.unis.base.server.service.XzqhService;
import com.unis.common.utils.ResponseWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * TY_XZQHB-无表注释
 * @author lipenghe at 
 */
@Component
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@Slf4j
public class XzqhServiceImpl implements XzqhService {

    @Autowired
    XzqhDomain xzqhDomain;

    /**
     * <TY_XZQHB-无表注释>
     * 选择性保存,包含新增和修改
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    public ResponseWrapper saveEntitySelectiveResult(XzqhVO xzqhVO) {
        return xzqhDomain.saveEntitySelective(xzqhVO);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 插入全部字段
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper insertEntityResult(XzqhVO xzqhVO) {
        return xzqhDomain.insertEntity(xzqhVO);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 选择性插入字段
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper insertEntitySelectiveResult(XzqhVO xzqhVO) {
        return xzqhDomain.insertEntitySelective(xzqhVO, true);
    }

   /**
    * <TY_XZQHB-无表注释>批量插入全部字段
    * @param xzqhVOList    <无表注释>对象列表
    * @author lipenghe with LAPTOP-DPSC399A
    */
    public ResponseWrapper insertBatchEntityListResult(List<XzqhVO> xzqhVOList) {
        int num= xzqhDomain.insertBatchEntityList(xzqhVOList);
        return ResponseWrapper.choose(num);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 更改状态
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper updateStatusByEntityResult(XzqhVO xzqhVO, String limit) {
        return xzqhDomain.updateStatusByEntity(xzqhVO);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体某些属性更新全部字段
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper updateByEntityResult(XzqhVO xzqhVO, String limit) {
        return xzqhDomain.updateByEntity(xzqhVO);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体不为空的属性,选择性更新字段
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper updateByEntitySelectiveResult(XzqhVO xzqhVO, String limit) {
        return xzqhDomain.updateByEntitySelective(xzqhVO);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体不为空的属性,选择性更新字段
     * @param entity    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper updateByEntitySelectiveResult(XzqhDO entity, String limit) {
        int num= xzqhDomain.updateByEntitySelective(entity);
        return ResponseWrapper.choose(num);
    }

    /**
     * <TY_XZQHB-无表注释>
     * [真删除]根据实体的某些属性进行单条或者批量删除
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper deleteByEntityResult(XzqhVO xzqhVO, String limit) {
        return xzqhDomain.deleteShamByEntity(xzqhVO);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体(唯一标示)查询一条数据
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper selectByIdResult(XzqhVO xzqhVO) {
        XzqhVO xzqhVODb= xzqhDomain.selectById(xzqhVO);
        if(xzqhVODb!= null){
            return ResponseWrapper.success(xzqhVODb);
        }
        return ResponseWrapper.notFound();
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体(唯一标示)查询一条数据
     * @param entity    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper selectByIdResult(XzqhDO entity) {
        XzqhVO xzqhVO= xzqhDomain.selectById(entity);
        if(xzqhVO!= null){
            return ResponseWrapper.success(xzqhVO);
        }
        return ResponseWrapper.notFound();
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体的某些属性查询分页数据
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper selectPageByEntityResult(int pageNo, int pageSize
        , XzqhVO xzqhVO, String order) {
        Page<XzqhVO> xzqhVOPage= xzqhDomain.selectPageByEntity(pageNo, pageSize, xzqhVO, order);
        PageInfo<XzqhVO> xzqhVOPageInfo= new PageInfo<>(xzqhVOPage, 10);
        return ResponseWrapper.success(xzqhVOPageInfo);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体的某些属性查询列表
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper selectByEntityResult(XzqhVO xzqhVO) {
        List<XzqhVO> xzqhVOList= xzqhDomain.selectByEntity(xzqhVO);
        return ResponseWrapper.success(xzqhVOList);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 根据实体的某些属性查询列表
     * @param entity    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper selectByEntityResult(XzqhDO entity) {
        List<XzqhVO> xzqhVOList= xzqhDomain.selectByEntity(entity);
        return ResponseWrapper.success(xzqhVOList);
    }

    /**
     * <TY_XZQHB-无表注释>
     * 返回新的只有唯一标示的对象
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public XzqhVO getIdInstance(XzqhVO xzqhVO) {
        XzqhVO xzqhVONew= new XzqhVO();
        xzqhVONew.setQhid(xzqhVO.getQhid());
        return xzqhVONew;
    }

    /**
     * <TY_XZQHB-无表注释>
     * 查询初始化数据
     * @param xzqhVO    <无表注释>对象
     * @author lipenghe with LAPTOP-DPSC399A
     */
    @Override
    public ResponseWrapper selectInitDataResult(XzqhVO xzqhVO) {
        return ResponseWrapper.success(xzqhVO);
    }

}
