package com.hzya.frame.sys.org.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hzya.frame.sys.viewFiled.entity.ViewFiled;
import com.hzya.frame.web.entity.BaseResult;
import org.springframework.stereotype.Service;
import com.hzya.frame.serviceUtil.ServiceUtil;
import com.hzya.frame.sys.org.entity.Org;
import com.hzya.frame.sys.org.service.IOrgService;
import com.hzya.frame.sys.org.dao.IOrgMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.hzya.frame.web.entity.JsonResultEntity;

import javax.annotation.Resource;
import java.util.List;


/**
 * @description: 组织机构管理  service
 * @tableName:   sys_org
 * @entityName:  Org
 * @author: 	 gjh
 * @history:	 1.0
 */
@Service(value="orgService")
public class  OrgServiceImpl extends ServiceUtil implements IOrgService{
	private final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Resource
	protected IOrgMapper  orgMapper;

	///**queryTree
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 查询所有组织机构List分页
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity queryList(JSONObject jsonObject) {
	//	Org entity = getData("jsonStr",jsonObject,Org.class);
	//	List<ViewFiled> viewFiledList  = getUserViewFiled("org");
	//	entity.setSts("Y");
	//	entity.setViewFiledList(viewFiledList);
	//	PageHelper.startPage(entity.getPageNum(), entity.getPageSize());
	//	List<Org> orgList = orgMapper.entity_list_like(entity);
	//	PageInfo pageInfo = new PageInfo(orgList);
	//	return BaseResult.getSuccessMessageEntity("查询组织机构成功",pageInfo);
	//}
	//
	///**
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 查询组织机构
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity queryEntity(JSONObject jsonObject) {
	//	Org entity = getData("jsonStr",jsonObject,Org.class);
	//	if(entity == null ){
	//		return BaseResult.getFailureMessageEntity("组织机构为空");
	//	}
	//	if(entity.getId() == null || "".equals(entity.getId()) ){
	//		return BaseResult.getFailureMessageEntity("组织机构id为空");
	//	}
	//	entity = orgMapper.entity_get(entity.getId());
	//	return BaseResult.getSuccessMessageEntity("查询组织机构成功",entity);
	//}
	///**
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 新增组织机构
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity addEntity(JSONObject jsonObject) {
	//	Org entity = getData("jsonStr",jsonObject,Org.class);
	//	if(entity == null ){
	//		return BaseResult.getFailureMessageEntity("组织机构为空");
	//	}
	//	entity.setCreate();
	//	if(entity.getOrgCode() == null || "".equals(entity.getOrgCode()) ){
	//		return BaseResult.getFailureMessageEntity("组织机构编码为空");
	//	}
	//	Org checkEntity = new Org();
	//	checkEntity.setOrgCode(entity.getOrgCode());
	//	checkEntity.setSts("Y");
	//	//校验编码唯一
	//	if(orgMapper.entity_count(checkEntity) > 0){
	//		return BaseResult.getFailureMessageEntity("组织机构编码已存在");
	//	}
	//	orgMapper.entity_insert(entity);
	//	return BaseResult.getSuccessMessageEntity("新增组织机构成功");
	//}
	///**
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 修改组织机构
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity updateEntity(JSONObject jsonObject) {
	//	Org entity = getData("jsonStr",jsonObject,Org.class);
	//	if(entity == null ){
	//		return BaseResult.getFailureMessageEntity("组织机构为空");
	//	}
	//	entity.setUpdate();
	//	if(entity.getId() == null || "".equals(entity.getId()) ){
	//		return BaseResult.getFailureMessageEntity("组织机构ID为空");
	//	}
	//	if(entity.getOrgCode() == null || "".equals(entity.getOrgCode()) ){
	//		return BaseResult.getFailureMessageEntity("组织机构编码为空");
	//	}
	//	Org checkEntity = new Org();
	//	checkEntity.setOrgCode(entity.getOrgCode());
	//	checkEntity.setId(entity.getId());
	//	checkEntity.setSts("Y");
	//	//校验编码唯一
	//	if(orgMapper.entity_count(checkEntity) != 1){
	//		return BaseResult.getFailureMessageEntity("组织机构编码不允许修改");
	//	}
	//	orgMapper.entity_update(entity);
	//	return BaseResult.getSuccessMessageEntity("修改组织机构成功");
	//}
	//
	///**
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 删除组织机构（真删）
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity delectEntity(JSONObject jsonObject) {
	//	//删除菜单树
	//	return doDelectEntity(jsonObject,"1");
	//}
	//
	//
	///**
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 删除组织机构（逻辑删除）
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity logicDelectEntity(JSONObject jsonObject) {
	//	//删除菜单树
	//	return doDelectEntity(jsonObject,"2");
	//}
	//
	///**
	// * @Author lvleigang
	//* @Description  删除组织机构
	// * @Date 2:51 下午 2023/6/14
	// * @param jsonObject
	// * @param type 1\真删 2\逻辑删除
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// **/
	//private JsonResultEntity doDelectEntity(JSONObject jsonObject, String type) {
	//	Org entity = getData("jsonStr",jsonObject,Org.class);
	//	if(entity == null ){
	//		return BaseResult.getFailureMessageEntity("组织机构为空");
	//	}
	//	if(entity.getId() == null || "".equals(entity.getId()) ){
	//		return BaseResult.getFailureMessageEntity("组织机构ID为空");
	//	}
	//	Org queryModule = new Org();
	//	queryModule.setId(entity.getId());
	//	queryModule.setSts("Y");
	//	List<Org> orgList = orgMapper.entity_list_base(queryModule);
	//	//调用方法递归去查询删除
	//	recursiveDelectTree(orgList,type);
	//	//最后删除最上面的节点
	//	if("1".equals(type)){
	//		orgMapper.entity_delete(queryModule);
	//	}else {
	//		queryModule.setUpdate();
	//		orgMapper.entity_logicDelete(queryModule);
	//	}
	//	return BaseResult.getSuccessMessageEntity("删除组织机构树成功");
	//}
	//
	///**
	// * @param orgs
	// * @param type
	// * @return void
	// * @Author lvleigang
	// * @Description 调用方法递归去查询删除
	// * @Date 10:50 上午 2022/12/14
	// **/
	//private void recursiveDelectTree(List<Org> orgs,String type) {
	//	//判断是否有数据
	//	if (orgs != null && orgs.size() > 0) {
	//		for (int i = 0; i < orgs.size(); i++) {
	//			//查询上级数据
	//			Org queryModule = new Org();
	//			queryModule.setUpId(orgs.get(i).getId());
	//			queryModule.setSts("Y");
	//			List<Org> childList = orgMapper.entity_list_base(queryModule);
	//			//查询数据
	//			if (childList != null && childList.size() > 0) {
	//				//递归调用
	//				recursiveDelectTree(childList, type);
	//			}
	//			//最后删除最上面的节点
	//			Org delectModule = new Org();
	//			delectModule.setId(orgs.get(i).getId());
	//			delectModule.setSts("Y");
	//			if("1".equals(type)){
	//				orgMapper.entity_delete(delectModule);
	//			}else {
	//				delectModule.setUpdate();
	//				orgMapper.entity_logicDelete(delectModule);
	//			}
	//		}
	//	}
	//}
	//
	///**
	// * @param jsonObject
	// * @return com.hzya.frame.web.entity.JsonResultEntity
	// * @Author lvleigang
	// * @Description 查询所有组织机构树
	// * @Date 9:40 上午 2022/12/7
	// **/
	//@Override
	//public JsonResultEntity queryTree(JSONObject jsonObject) {
	//	Org entity = new Org();
	//	entity.setSts("Y");
	//	entity.setLvl(0L);
	//	List<Org> orgList = orgMapper.entity_list_base(entity);
	//	//递归查询
	//	recursiveQueryTree(orgList);
	//	return BaseResult.getSuccessMessageEntity("查询所有组织机构树成功",orgList);
	//}
	//
	///**
	// * @return void
	// * @Author lvleigang
	// * @Description 递归查询菜单
	// * @Date 9:21 上午 2022/12/14
	// **/
	//private void recursiveQueryTree(List<Org> orgs) {
	//	//判断是否有数据
	//	if (orgs != null && orgs.size() > 0) {
	//		for (int i = 0; i < orgs.size(); i++) {
	//			Org entity = new Org();
	//			entity.setSts("Y");
	//			entity.setUpId(orgs.get(i).getId());
	//			List<Org> childModule = orgMapper.entity_list_base(entity);
	//			//查询数据
	//			if (childModule != null && childModule.size() > 0) {
	//				//递归调用
	//				recursiveQueryTree(childModule);
	//				//设置下级菜单
	//				orgs.get(i).setChildren(childModule);
	//			}
	//		}
	//	}
	//}
}
