package com.bonus.hn.bearing.capacity.backstage.manager.dao;

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

import com.bonus.hn.bearing.capacity.backstage.manager.entity.BindRelationBean;
import com.bonus.hn.bearing.capacity.backstage.manager.entity.Dict;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
 * @author bonus
 */
@Mapper
public interface DictDao {

	@Select("select * from t_dict t where t.id = #{id}")
	Dict getById(Long id);

	@Delete("delete from t_dict where id = #{id}")
	int delete(Long id);

	int update(Dict dict);

	@Options(useGeneratedKeys = true, keyProperty = "id")
	@Insert("insert into t_dict(type, k, val, createTime, updateTime) values(#{type}, #{k}, #{val}, now(), now())")
	int save(Dict dict);

	int count(@Param("params") Map<String, Object> params);

	List<Dict> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset,
					@Param("limit") Integer limit);

	@Select("select * from t_dict t where t.type = #{type} and k = #{k}")
	Dict getByTypeAndK(@Param("type") String type, @Param("k") String k);

	@Select("select * from t_dict t where t.type = #{type}")
	List<Dict> listByType(String type);

	/**
	 *
	 * @param level  类型  	1：工程-项目管理团队绑定关系
	 *                  	2：分公司-自有班组绑定关系
	 *               		3：工程-自有班组绑定关系
	 *               		4：工程-分包商绑定关系
	 *               		5：工程-分包商-分包班组绑定关系
	 *               		6：工程-工机具绑定关系
	 *               		7：分包商-杆塔绑定关系
	 *               		不能为空！！！！！！
	 * @param pId			根据所需查询待删除 传入与上对应的id
	 *                      例如：若删除工程，level值需传入“1,3,4,5,6”
	 * @param childId		对应level第二个id，若想删除自有班组，level需传值“2,3” pId不传值，childId传对应需删除的自有班组id
	 * @param sonId			与上相同
	 * @param bName			对应类型名称
	 *                       pId,childId,sonId有且至少传一个值
	 * @return
	 */
	List<BindRelationBean>getIsBindStatus(String level,String pId,String childId,String sonId,String bName);
}
