package com.unis.base.server.domain;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.unis.base.common.vo.DSbxxsjyClassifyVO;
import com.unis.base.common.vo.DSbxxsjyQueryVO;
import com.unis.base.common.vo.EquipmentRecordsVO;
import com.unis.common.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;

import com.unis.base.common.vo.DSbxxsjyVO;
import com.unis.base.server.dao.DSbxxsjyDao;
import com.unis.base.server.entity.DSbxxsjyDO;
import com.unis.common.utils.LsBeanUtils;
import org.springframework.stereotype.Component;

/**
 * @author huangxing
 * @version 1.0
 * @Title DSbxxsjyDomain
 * @ProjectName 持久化
 * @Description
 * @date 2019/07/22 17点26分
 */
@Component
public class DSbxxsjyDomain extends BaseDomain {

	@Autowired
	private DSbxxsjyDao dSbxxsjyDao;

	@Autowired
	private EquipmentRecordsDomain equipmentRecordsDomain;

	/**
	 * 根据参数获取设备信息
	 * @param dSbxxsjyVO
	 * @return
	 */
	public List<DSbxxsjyVO> getDSbxxsjyList(DSbxxsjyQueryVO dSbxxsjyQueryVO) {
		DSbxxsjyDO dSbxxsjyDO = new DSbxxsjyDO();
		LsBeanUtils.copyAllProperties(dSbxxsjyQueryVO,dSbxxsjyDO);
		return dSbxxsjyDao.getDSbxxsjyList(dSbxxsjyDO);
	}

	/**
	 * 根据机构ID获取设备列表
	 * @param jgId
	 * @return
	 */
	public List<DSbxxsjyVO> getDSbxxsjyListByJgId(String jgId) {
		return dSbxxsjyDao.getDSbxxsjyListByJgId(jgId);
	}

	/**
	 * 根据库点获取设备信息列表
	 * @param kddm
	 * @return
	 */
	public List<DSbxxsjyVO> getEquipmentListByKddm(String kddm) {
		return dSbxxsjyDao.getEquipmentListByKddm(kddm);
	}

	/**
	 * 根据设备编号获取设备信息
	 * @param sbbh
	 * @return
	 */
	public DSbxxsjyDO getDSbxxsjyInfo(String sbbh) {
		return dSbxxsjyDao.getDSbxxsjyInfo( sbbh);
	}

	/**
	 * 根据设备编号获取设备信息-任何状态
	 * @param sbbh
	 * @return
	 */
	public DSbxxsjyDO getEquipmentInfo(String sbbh) {
		return dSbxxsjyDao.getEquipmentInfo(sbbh);
	}

	/**
	 * 根据设备编号更新设备信息
	 * @param dSbxxsjyVO
	 * @return
	 */
	public int update(DSbxxsjyVO dSbxxsjyVO) {
		DSbxxsjyDO dSbxxsjyDO = new DSbxxsjyDO();
		LsBeanUtils.copyAllProperties(dSbxxsjyVO,dSbxxsjyDO);
		return dSbxxsjyDao.update(dSbxxsjyDO);
	}

	/**
	 * 新增设备信息
	 * @param dAjxxsjyVO
	 * @return
	 */
	public int insert(DSbxxsjyVO dAjxxsjyVO) {
		//进行库点信息copy
		DSbxxsjyDO dSbxxsjyDO = new DSbxxsjyDO();
		//根据统一社会信用代码生成库点id（库点id规则：统一社会信用代码+001）
		String prefix = "";
		if (dAjxxsjyVO.getKddm() == null){
			prefix = "SB"+ DateUtil.getDate();
		} else {
			prefix = dAjxxsjyVO.getKddm()+DateUtil.getDate()+"";
		}
		String sbbh = getMaxCodeById(dSbxxsjyDao.getMaxById(prefix),prefix,5);
		dAjxxsjyVO.setSbbh(sbbh);

		if(dAjxxsjyVO.getSfba()==null) {

			dAjxxsjyVO.setSfba(0);
		}


		LsBeanUtils.copyAllProperties(dAjxxsjyVO,dSbxxsjyDO);

		return dSbxxsjyDao.insert(dSbxxsjyDO);
	}


	/**
	 * 更改备案状态
	 * @param equipmentRecordsVO
	 * @return
	 */
    public Integer updateFilingStatus(EquipmentRecordsVO equipmentRecordsVO) {
		Map<String, Object> updateMap = new HashMap<>();
		DSbxxsjyVO dSbxxsjyVO = new DSbxxsjyVO();
		dSbxxsjyVO.setSbbh(equipmentRecordsVO.getSbbh());
		dSbxxsjyVO.setSfba(equipmentRecordsVO.getSfba());
    	int i = dSbxxsjyDao.updateFilingStatus(dSbxxsjyVO);
		if (i == 0){
			return i;
		}
    	return equipmentRecordsDomain.insert(equipmentRecordsVO);
    }

	/**
	 * 备案设备主表数据
	 * @param dSbxxsjyVO
	 * @return
	 */
	public int updateFiling(DSbxxsjyVO dSbxxsjyVO) {
		return dSbxxsjyDao.updateFilingStatus(dSbxxsjyVO);
	}

	/**
	 * 根据条件删除设备列表
	 * @param dSbxxsjyClassifyVO
	 * @return
	 */
	public int deleteList(DSbxxsjyClassifyVO dSbxxsjyClassifyVO) {
		List<DSbxxsjyVO> dSbxxsjyVOList = dSbxxsjyDao.getEquipmentListByKddm(dSbxxsjyClassifyVO.getKddm());
		if (dSbxxsjyVOList == null){
			return 1;
		}
		return dSbxxsjyDao.deleteList(dSbxxsjyClassifyVO);
	}
}
