package com.philisense.www.controller.web;

import com.philisense.www.annotation.log.OperateLog;
import com.philisense.www.common.config.CommonConst;
import com.philisense.www.controller.BaseUtilController;
import com.philisense.www.service.ProOrgService;
import com.philisense.www.utils.ActiveUserUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;

@RestController
@RequestMapping(CommonConst.WEB_REST_SERVICE_PREFICX + "proorg")
@Api(tags = "ProOrgControllerForWeb|一个用来操作-{机构表}-业务模块的控制器")
public class ProOrgControllerForWeb extends BaseUtilController {

    @Autowired
    private ProOrgService proOrgService;


    @GetMapping("/delete")
    @ApiOperation(value = "根据-{机构表}-主键删除记录", notes = "成功返回:{\"success\":true,\"message\",\"数据删除成功\"},失败返回:{\"success\":false,\"message\",\"数据删除失败\"}")
    @ApiImplicitParam(paramType = "query", name = "recordid", value = "记录主键", required = true,  dataTypeClass = String.class)
    @OperateLog(name = "根据-{机构表}-主键删除记录", value = "delete", type = "PC")
    public Map<String, Object> deleteByPrimaryKeyForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestParam String recordid) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            Map<String, Object> one = proOrgService.getOne(new HashMap<String, Object>() {{
                put("org_id", recordid);
            }});
//            int flag = proOrgService.deleteByPrimaryKey(recordid);
            int flag = 0;
            if(one != null) {
                flag = proOrgService.deleteByMap(new HashMap<String, Object>() {{
                    put("levelcode", one.get("levelcode"));
                }});
            }
            if (1 <= flag) {
                result.put(DATASUCCESS, SUCCESSFLAG);
                result.put(DATAMESSAGE, DELETE_SUCCESS_MSG);
            } else {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, DELETE_FAIL_MSG);
            }

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, DELETE_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @GetMapping("/get")
    @ApiOperation(value = "根据-{机构表}-主键查询记录", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"datarecord\":\"{}\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParam(paramType = "body", name = "recordid", value = "记录主键", required = true,  dataTypeClass = String.class)
    @OperateLog(name = "根据-{机构表}-主键查询记录", value = "query", type = "PC")
    public Map<String, Object> selectByPrimaryKeyForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestParam String recordid) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATARECORD, proOrgService.selectByPrimaryKey(recordid));
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/insert")
    @ApiOperation(value = "根据-{机构表}-对象插入记录", notes = "成功返回:{\"success\":true,\"message\",\"数据插入成功\"},失败返回:{\"success\":false,\"message\",\"数据插入失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象插入记录", value = "insert", type = "PC")
    public Map<String, Object> insertForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            Object org_code = map.get("org_code");
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("org_code", org_code.toString());
            Map<String, Object> one = proOrgService.getOne(paramMap);
            if (null != one) {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, INSERT_FAIL_MSG + "，机构代码已存在");
                return result;
            }
            String ID = UUID.randomUUID().toString().replaceAll("-", "");
            map.put("org_id", ID);
            map.put("id", ID);
            map.put("code", org_code);
            map.put("value", org_code);
            map.put("title", map.get("org_name"));
            map.put("levelcode", map.get("parentlevelcode") + "/" + ID);

            proOrgService.insert(map);
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, INSERT_SUCCESS_MSG);
            result.put(DATARECORD, map);
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, INSERT_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/update")
    @ApiOperation(value = "根据-{机构表}-对象更新记录", notes = "成功返回:{\"success\":true,\"message\",\"数据更新成功\"},失败返回:{\"success\":false,\"message\",\"数据更新失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象更新记录", value = "update", type = "PC")
    public Map<String, Object> updateForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            String ID = map.get("org_id") + "";
            if (ID.equals("")) {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, UPDATE_FAIL_MSG + "记录ID不能为空");
                return result;
            }
            Map<String, Object> temmap = proOrgService.selectByPrimaryKey(ID);

            if (null == temmap || temmap.size() == 0) {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, UPDATE_FAIL_MSG + ID + "记录不存在");
                return result;
            }

            Object org_code = map.get("org_code");
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("org_code", org_code.toString());
            List<Map<String, Object>> nameAll = proOrgService.getAll(paramMap);
            if (null != nameAll && !nameAll.isEmpty()) {
                if (1 == nameAll.size()) {
                    Map<String, Object> proorg = nameAll.get(0);
                    if (!proorg.get("org_id").equals(map.get("org_id"))) {
                        result.put(DATASUCCESS, ERRORFLAG);
                        result.put(DATAMESSAGE, INSERT_FAIL_MSG + "机构代码已存在！");
                        return result;
                    }
                } else {
                    result.put(DATASUCCESS, ERRORFLAG);
                    result.put(DATAMESSAGE, INSERT_FAIL_MSG + "机构代码已存在！");
                    return result;
                }
            }

            temmap.putAll(map);

            int flag = proOrgService.update(temmap);
            if (1 <= flag) {
                result.put(DATASUCCESS, SUCCESSFLAG);
                result.put(DATAMESSAGE, UPDATE_SUCCESS_MSG);
            } else {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, UPDATE_FAIL_MSG);
            }

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, UPDATE_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/deleteByMap")
    @ApiOperation(value = "根据-{机构表}-对象Map删除记录", notes = "成功返回:{\"success\":true,\"message\",\"数据删除成功\"},失败返回:{\"success\":false,\"message\",\"数据删除失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map删除记录", value = "delete", type = "PC")
    public Map<String, Object> deleteByMapForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            int flag = proOrgService.deleteByMap(map);
            if (1 <= flag) {
                result.put(DATASUCCESS, SUCCESSFLAG);
                result.put(DATAMESSAGE, DELETE_SUCCESS_MSG);
            } else {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, DELETE_FAIL_MSG);
            }

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, DELETE_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/updateByMap")
    @ApiOperation(value = "根据-{机构表}-对象Map更新记录", notes = "成功返回:{\"success\":true,\"message\",\"数据更新成功\"},失败返回:{\"success\":false,\"message\",\"数据更新失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map更新记录", value = "update", type = "PC")
    public Map<String, Object> updateByMapForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {


            int flag = proOrgService.updateByMap(map);
            if (1 <= flag) {
                result.put(DATASUCCESS, SUCCESSFLAG);
                result.put(DATAMESSAGE, UPDATE_SUCCESS_MSG);
            } else {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, UPDATE_FAIL_MSG);
            }

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, UPDATE_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/getOne")
    @ApiOperation(value = "根据-{机构表}-对象Map查询记录", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"datarecord\":\"{}\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map查询记录", value = "query", type = "PC")
    public Map<String, Object> getOneForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATARECORD, proOrgService.getOne(map));
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/getAll")
    @ApiOperation(value = "根据-{机构表}-对象Map查询所有记录", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map查询所有记录", value = "query", type = "PC")
    public Map<String, Object> getAllForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST_VUE, proOrgService.getAll(map));
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping( "/queryPage")
    @ApiOperation(value="根据-{机构表}-对象Map分页记录", notes="成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
        @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map分页记录",value = "query",type = "PC")
    public Map<String, Object>  queryPageForProOrgForWeb(HttpServletRequest request , HttpServletResponse response,@RequestBody Map<String, Object> map)
    {
            Map<String, Object> result = new HashMap<String, Object>();
            try {

            int currentPage = map.get(DATACURRENT)!=null?Integer.parseInt(map.get(DATACURRENT)+"")-1:0;
            int pageSize = map.get(PAGESIZE)!=null?Integer.parseInt(map.get(PAGESIZE)+""):10;
            int pageStart = currentPage*pageSize ;


            map.put(PAGESIZE,pageSize);
            map.put(PAGESTART,pageStart);

            int total = proOrgService.count(map);
            List<Map<String, Object>> datalist = new ArrayList<Map<String, Object>>();
            if(total>0){
            datalist = proOrgService.queryPage(map);
            }
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST,datalist);
            Map<String, Object> pagemode = new HashMap<String, Object>();
            pagemode.put(DATATOTAL,total);
            pagemode.put(PAGESIZE,map.get(PAGESIZE)!=null?map.get(PAGESIZE):10);
            pagemode.put(DATACURRENT,map.get(DATACURRENT)!=null?map.get(DATACURRENT):0);
            result.put(PAGINATION,pagemode);
            }catch(Exception e){
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG+e.getMessage());
            }
            return result;
    }


    @PostMapping( "/queryPageVue")
    @ApiOperation(value="根据-{机构表}-对象Map分页记录", notes="成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
        @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map分页记录",value = "query",type = "PC")
    public Map<String, Object>  queryPageVueForProOrgForWeb(HttpServletRequest request , HttpServletResponse response,@RequestBody Map<String, Object> map)
    {
            Map<String, Object> result = new HashMap<String, Object>();
            try {

            int currentPage = map.get(DATACURRENT_VUE)!=null?Integer.parseInt(map.get(DATACURRENT_VUE)+"")-1:0;
            int pageSize = map.get(PAGESIZE_VUE)!=null?Integer.parseInt(map.get(PAGESIZE_VUE)+""):10;
            int pageStart = currentPage*pageSize ;


            map.put(PAGESIZE_VUE,pageSize);
            map.put(PAGESTART,pageStart);

            int total = proOrgService.count(map);
            List<Map<String, Object>> datalist = new ArrayList<Map<String, Object>>();
            if(total>0){
            datalist = proOrgService.queryPage(map);
            }
            Map<String, Object> tempresult = new HashMap<String, Object>();
            tempresult.put(DATASUCCESS, SUCCESSFLAG);
            tempresult.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            tempresult.put(DATALIST_VUE,datalist);
            tempresult.put(DATATOTAL_VUE,total);
            tempresult.put(PAGESIZE_VUE,map.get(PAGESIZE_VUE)!=null?map.get(PAGESIZE_VUE):10);
            tempresult.put(DATACURRENT_VUE,map.get(DATACURRENT_VUE)!=null?map.get(DATACURRENT_VUE):0);
            result.put(DATARESULT, tempresult);
            }catch(Exception e){
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG+e.getMessage());
            }
            return result;
    }



    @PostMapping( "/queryPageOracle")
    @ApiOperation(value="根据-{机构表}-对象Map分页记录", notes="成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
        @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
        @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map分页记录",value = "query",type = "PC")
    public Map<String, Object>  queryPageOracleForProOrgForWeb(HttpServletRequest request , HttpServletResponse response,@RequestBody Map<String, Object> map)
    {
            Map<String, Object> result = new HashMap<String, Object>();
            try {

            int currentPage = map.get(DATACURRENT)!=null?Integer.parseInt(map.get(DATACURRENT)+""):1;
            int pageSize = map.get(PAGESIZE)!=null?Integer.parseInt(map.get(PAGESIZE)+""):10;
            int pageStart = currentPage*pageSize ;


            map.put(PAGESTART,(currentPage-1)*pageSize);
            map.put(PAGEEND,currentPage*pageSize);

            int total = proOrgService.count(map);
            List<Map<String, Object>> datalist = new ArrayList<Map<String, Object>>();
            if(total>0){
            datalist = proOrgService.queryPage(map);
            }
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST,datalist);
            Map<String, Object> pagemode = new HashMap<String, Object>();
            pagemode.put(DATATOTAL,total);
            pagemode.put(PAGESIZE,map.get(PAGESIZE)!=null?map.get(PAGESIZE):10);
            pagemode.put(DATACURRENT,map.get(DATACURRENT)!=null?map.get(DATACURRENT):0);
            result.put(PAGINATION,pagemode);
            }catch(Exception e){
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG+e.getMessage());
            }
            return result;
    }

    @PostMapping("/count")
    @ApiOperation(value = "根据-{机构表}-对象Map统计查询总数记录", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map统计查询总数记录", value = "query", type = "PC")
    public Map<String, Object> countForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATATOTAL_VUE, proOrgService.count(map));
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/insertBatch")
    @ApiOperation(value = "根据-{机构表}-对象Map批量插入记录", notes = "成功返回:{\"success\":true,\"message\",\"数据插入成功\"},失败返回:{\"success\":false,\"message\",\"数据插入失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map批量插入记录", value = "insert", type = "PC")
    public Map<String, Object> insertBatchForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody List<Map<String, Object>> list) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            for (Map<String, Object> map : list) {
                map.put("org_id", UUID.randomUUID().toString().replaceAll("-", ""));
            }

            proOrgService.insertBatch(list);
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, INSERT_SUCCESS_MSG);
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, INSERT_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/deleteBatch")
    @ApiOperation(value = "根据-{机构表}-对象Map批量删除记录", notes = "成功返回:{\"success\":true,\"message\",\"数据删除成功\"},失败返回:{\"success\":false,\"message\",\"数据删除失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map批量删除记录", value = "delete", type = "PC")
    public Map<String, Object> deleteBatchForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody List<Map<String, Object>> list) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            proOrgService.deleteBatch(list);
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, DELETE_SUCCESS_MSG);

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, DELETE_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/updateBatch")
    @ApiOperation(value = "根据-{机构表}-对象Map批量更新记录", notes = "成功返回:{\"success\":true,\"message\",\"数据更新成功\"},失败返回:{\"success\":false,\"message\",\"数据更新失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map批量更新记录", value = "update", type = "PC")
    public Map<String, Object> updateBatchForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody List<Map<String, Object>> list) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {


            proOrgService.updateBatch(list);
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, UPDATE_SUCCESS_MSG);

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, UPDATE_FAIL_MSG + e.getMessage());
        }
        return result;
    }


    @PostMapping("/getProOrgTreeByParentid")
    @ApiOperation(value = "查询所有机构数据根据父节点id", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构ID", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "查询所有机构数据根据父节点id", value = "query", type = "PC")
    public Map<String, Object> getProOrgTreeByParentidForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            List<Map<String, Object>> treedata = proOrgService.getProOrgTreeByParentid(map);

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST, treedata);


        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }
    
    @PostMapping("/getProOrgTreeByParentidVue")
    @ApiOperation(value = "查询所有机构数据根据父节点id", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构ID", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "查询所有机构数据根据父节点id", value = "query", type = "PC")
    public Map<String, Object> getProOrgTreeByParentidForWebVue(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            List<Map<String, Object>> treedata = proOrgService.getProOrgTreeByParentid(map);

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST_VUE, treedata);


        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }
    @PostMapping("/getProOrgTreeByLevelCode")
    @ApiOperation(value = "查询所有机构数据根据层次码", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构ID", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "查询所有机构数据根据层次码", value = "query", type = "PC")
    public Map<String, Object> getProOrgTreeByLevelCodeForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            String parentid = map.get("parentid") + "";

            List<Map<String, Object>> treedata = proOrgService.getProOrgTreeByLevelCode(map);

            List<Map<String, Object>> parenttreedata = new ArrayList<Map<String, Object>>();

            if (null != treedata && treedata.size() > 0) {

                //一级树节点
                for (Map<String, Object> tree : treedata) {

                    if (tree.get("parentid").equals(parentid)) {
                        tree.put("key", tree.get("org_code"));
                        parenttreedata.add(tree);
                    }
                }


                //二级树节点
                List<Map<String, Object>> second_treedata = new ArrayList<Map<String, Object>>();//二级树节点
                for (Map<String, Object> ptree : parenttreedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            second_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                List<Map<String, Object>> third_treedata = new ArrayList<Map<String, Object>>();//三级树节点
                List<Map<String, Object>> fourth_treedata = new ArrayList<Map<String, Object>>();//四级树节点
                List<Map<String, Object>> fifth_treedata = new ArrayList<Map<String, Object>>();//五级树节点
                List<Map<String, Object>> sixth_treedata = new ArrayList<Map<String, Object>>();//六级树节点
                List<Map<String, Object>> seventh_treedata = new ArrayList<Map<String, Object>>();//七级树节点
                List<Map<String, Object>> eighth_treedata = new ArrayList<Map<String, Object>>();//八级树节点
                List<Map<String, Object>> nineth_treedata = new ArrayList<Map<String, Object>>();//九级树节点
                List<Map<String, Object>> tenth_treedata = new ArrayList<Map<String, Object>>();//十级树节点

                //三级树节点
                for (Map<String, Object> ptree : second_treedata) {
                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();

                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));
                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            third_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //四级树节点
                for (Map<String, Object> ptree : third_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            fourth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //五级树节点
                for (Map<String, Object> ptree : fourth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            fifth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //六级树节点
                for (Map<String, Object> ptree : fifth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            sixth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }
                

                
                //七级树节点
                for (Map<String, Object> ptree : sixth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	seventh_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }
                //八级树节点
                for (Map<String, Object> ptree : seventh_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	eighth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }                
                
                //九级树节点
                for (Map<String, Object> ptree : eighth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	nineth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }                
                
                //十级树节点
                for (Map<String, Object> ptree : nineth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	tenth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }                
                

            }

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST, parenttreedata);


        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/getProOrgTreeByLevelCodeForGrading")
    @ApiOperation(value = "查询所有机构数据根据层次码", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构ID", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "查询所有机构数据根据层次码", value = "query", type = "PC")
    public Map<String, Object> getProOrgTreeByLevelCodeForGradingForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            String parentid = map.get("parentid") + "";
            map.put("userId", ActiveUserUtils.getUserId());

            List<Map<String, Object>> treedata = proOrgService.getProOrgTreeByLevelCode(map);

            List<Map<String, Object>> parenttreedata = new ArrayList<Map<String, Object>>();

            if (null != treedata && treedata.size() > 0) {

                //一级树节点
                for (Map<String, Object> tree : treedata) {

                    if (tree.get("parentid").equals(parentid)) {
                        tree.put("key", tree.get("org_code"));
                        parenttreedata.add(tree);
                    }
                }


                //二级树节点
                List<Map<String, Object>> second_treedata = new ArrayList<Map<String, Object>>();//二级树节点
                for (Map<String, Object> ptree : parenttreedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            second_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                List<Map<String, Object>> third_treedata = new ArrayList<Map<String, Object>>();//三级树节点
                List<Map<String, Object>> fourth_treedata = new ArrayList<Map<String, Object>>();//四级树节点
                List<Map<String, Object>> fifth_treedata = new ArrayList<Map<String, Object>>();//五级树节点
                List<Map<String, Object>> sixth_treedata = new ArrayList<Map<String, Object>>();//六级树节点
                List<Map<String, Object>> seventh_treedata = new ArrayList<Map<String, Object>>();//七级树节点
                List<Map<String, Object>> eighth_treedata = new ArrayList<Map<String, Object>>();//八级树节点
                List<Map<String, Object>> nineth_treedata = new ArrayList<Map<String, Object>>();//九级树节点
                List<Map<String, Object>> tenth_treedata = new ArrayList<Map<String, Object>>();//十级树节点

                //三级树节点
                for (Map<String, Object> ptree : second_treedata) {
                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();

                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));
                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            third_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //四级树节点
                for (Map<String, Object> ptree : third_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            fourth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //五级树节点
                for (Map<String, Object> ptree : fourth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            fifth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //六级树节点
                for (Map<String, Object> ptree : fifth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            sixth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }



                //七级树节点
                for (Map<String, Object> ptree : sixth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	seventh_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }
                //八级树节点
                for (Map<String, Object> ptree : seventh_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	eighth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }

                //九级树节点
                for (Map<String, Object> ptree : eighth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	nineth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }

                //十级树节点
                for (Map<String, Object> ptree : nineth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	tenth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


            }

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST, parenttreedata);


        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/getProOrgTreeByLevelCodeVue")
    @ApiOperation(value = "查询所有机构数据根据层次码", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构ID", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "查询所有机构数据根据层次码", value = "query", type = "PC")
    public Map<String, Object> getProOrgTreeByLevelCodeForWebVue(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {
            String parentid = map.get("parentid") + "";

            List<Map<String, Object>> treedata = proOrgService.getProOrgTreeByLevelCode(map);

            List<Map<String, Object>> parenttreedata = new ArrayList<Map<String, Object>>();

            if (null != treedata && treedata.size() > 0) {

                //一级树节点
                for (Map<String, Object> tree : treedata) {

                    if (tree.get("parentid").equals(parentid)) {
                        tree.put("key", tree.get("org_code"));
                        parenttreedata.add(tree);
                    }
                }


                //二级树节点
                List<Map<String, Object>> second_treedata = new ArrayList<Map<String, Object>>();//二级树节点
                for (Map<String, Object> ptree : parenttreedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            second_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                List<Map<String, Object>> third_treedata = new ArrayList<Map<String, Object>>();//三级树节点
                List<Map<String, Object>> fourth_treedata = new ArrayList<Map<String, Object>>();//四级树节点
                List<Map<String, Object>> fifth_treedata = new ArrayList<Map<String, Object>>();//五级树节点
                List<Map<String, Object>> sixth_treedata = new ArrayList<Map<String, Object>>();//六级树节点
                List<Map<String, Object>> seventh_treedata = new ArrayList<Map<String, Object>>();//七级树节点
                List<Map<String, Object>> eighth_treedata = new ArrayList<Map<String, Object>>();//八级树节点
                List<Map<String, Object>> nineth_treedata = new ArrayList<Map<String, Object>>();//九级树节点
                List<Map<String, Object>> tenth_treedata = new ArrayList<Map<String, Object>>();//十级树节点

                //三级树节点
                for (Map<String, Object> ptree : second_treedata) {
                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();

                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));
                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            third_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //四级树节点
                for (Map<String, Object> ptree : third_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            fourth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //五级树节点
                for (Map<String, Object> ptree : fourth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            fifth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }


                //六级树节点
                for (Map<String, Object> ptree : fifth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                            sixth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }
                

                
                //七级树节点
                for (Map<String, Object> ptree : sixth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	seventh_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }
                //八级树节点
                for (Map<String, Object> ptree : seventh_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	eighth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }                
                
                //九级树节点
                for (Map<String, Object> ptree : eighth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	nineth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }                
                
                //十级树节点
                for (Map<String, Object> ptree : nineth_treedata) {

                    List<Map<String, Object>> sontreedata = new ArrayList<Map<String, Object>>();
                    for (Map<String, Object> tree : treedata) {
                        tree.put("key", tree.get("org_code"));

                        if (tree.get("parentid").equals(ptree.get("org_id"))) {
                        	tenth_treedata.add(tree);
                            sontreedata.add(tree);
                        }
                    }
                    ptree.put("children", sontreedata);
                }                
                

            }

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST_VUE, parenttreedata);


        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }


    @PostMapping("/getPageProOrgByOrgCode")
    @ApiOperation(value = "根据机构代码查询用户列表", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构代码", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据机构代码查询用户列表", value = "query", type = "PC")
    public Map<String, Object> getPageProOrgByOrgCodeForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

        int currentPage = map.get(DATACURRENT)!=null?Integer.parseInt(map.get(DATACURRENT)+"")-1:0;
        int pageSize = map.get(PAGESIZE)!=null?Integer.parseInt(map.get(PAGESIZE)+""):10;
        int pageStart = currentPage*pageSize ;


        map.put(PAGESIZE,pageSize);
        map.put(PAGESTART,pageStart);

        int total = proOrgService.count(map);
        List<Map<String, Object>> datalist = new ArrayList<Map<String, Object>>();
        if(total>0){
        datalist = proOrgService.queryPage(map);
        }
        result.put(DATASUCCESS, SUCCESSFLAG);
        result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
        result.put(DATALIST,datalist);
        Map<String, Object> pagemode = new HashMap<String, Object>();
        pagemode.put(DATATOTAL,total);
        pagemode.put(PAGESIZE,map.get(PAGESIZE)!=null?map.get(PAGESIZE):10);
        pagemode.put(DATACURRENT,map.get(DATACURRENT)!=null?map.get(DATACURRENT):0);
        result.put(PAGINATION,pagemode);
        }catch(Exception e){
        result.put(DATASUCCESS, ERRORFLAG);
        result.put(DATAMESSAGE, QUERY_FAIL_MSG+e.getMessage());
        }
        return result;
    }
    
    @PostMapping("/getPageProOrgByOrgCodeVue")
    @ApiOperation(value = "根据机构代码查询用户列表", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构代码", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据机构代码查询用户列表", value = "query", type = "PC")
    public Map<String, Object> getPageProOrgByOrgCodeForWebVue(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            int currentPage = map.get(DATACURRENT_VUE) != null ? Integer.parseInt(map.get(DATACURRENT_VUE) + "") - 1 : 0;
            int pageSize = map.get(PAGESIZE_VUE) != null ? Integer.parseInt(map.get(PAGESIZE_VUE) + "") : 10;
            int pageStart = currentPage * pageSize;

            map.put(PAGESIZE_VUE, pageSize);
            map.put(PAGESTART, pageStart);

            int total = proOrgService.getCountProOrgByOrgCode(map);
            List<Map<String, Object>> datalist = new ArrayList<Map<String, Object>>();
            if (total > 0) {
                datalist = proOrgService.getPageProOrgByOrgCode(map);
            }
            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST_VUE, datalist);
            Map<String, Object> pagemode = new HashMap<String, Object>();
            pagemode.put(DATATOTAL_VUE, total);
            pagemode.put(PAGESIZE_VUE, map.get(PAGESIZE_VUE) != null ? map.get(PAGESIZE_VUE) : 10);
            pagemode.put(DATACURRENT_VUE, map.get(DATACURRENT_VUE) != null ? map.get(DATACURRENT_VUE) : 0);
            result.put(PAGINATION, pagemode);

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/updateDropNode")
    @ApiOperation(value = "根据-{来源节点与目标节点}-对象更新记录", notes = "成功返回:{\"success\":true,\"message\",\"数据更新成功\"},失败返回:{\"success\":false,\"message\",\"数据更新失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "source_id", value = "来源机构ID", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "source_parentid", value = "来源机构父ID", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "target_id", value = "目标会机构ID", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "修改后的层次码", required = true,  dataTypeClass = String.class),
    })
    @OperateLog(name = "根据-{来源节点与目标节点}-对象更新记录", value = "update", type = "PC")
    public Map<String, Object> updateDropNodeForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            Map<String, Object> temp = new HashMap<String, Object>();

            temp.put("id", map.get("source_id"));
            temp.put("source_parentid", map.get("source_parentid"));
            temp.put("parentid", map.get("target_id"));
            temp.put("levelcode", map.get("levelcode"));

            Map<String, Object> paramsmap = proOrgService.selectByPrimaryKey(map.get("source_id") + "");

            int flag = 0;

            if (null != paramsmap && paramsmap.size() > 0) {
                paramsmap.putAll(temp);
                flag = proOrgService.updateDropNode(paramsmap);
            }

            if (1 <= flag) {
                // 修改子节点 levelcode
                proOrgService.updateBatchLevelCode(new HashMap<String, Object>() {{
                    put("source_levelcode", map.get("source_levelcode"));
                    put("levelcode", map.get("levelcode"));
                }});
                result.put(DATASUCCESS, SUCCESSFLAG);
                result.put(DATAMESSAGE, UPDATE_SUCCESS_MSG);
                result.put(DATARECORD, paramsmap);
            } else {
                result.put(DATASUCCESS, ERRORFLAG);
                result.put(DATAMESSAGE, UPDATE_FAIL_MSG);
            }

        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, UPDATE_FAIL_MSG + e.getMessage());
        }
        return result;
    }

    @PostMapping("/getAllOrg")
    @ApiOperation(value = "根据-{机构表}-对象Map查询所有记录", notes = "成功返回:{\"success\":true,\"message\",\"数据查询成功\",\"data\":\"[]\"},失败返回:{\"success\":false,\"message\",\"数据查询失败\"}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "org_id", value = "机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_name", value = "机构名称", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "org_code", value = "机构code", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "parentid", value = "父机构Id", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "levelcode", value = "层次码", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "leaf", value = "是否叶子", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "icon", value = "图标", required = true,  dataTypeClass = String.class),
            @ApiImplicitParam(paramType = "body", name = "cls", value = "层叠样式", required = true,  dataTypeClass = String.class)
    })
    @OperateLog(name = "根据-{机构表}-对象Map查询所有记录", value = "query", type = "PC")
    public Map<String, Object> getAllOrgForProOrgForWeb(HttpServletRequest request, HttpServletResponse response, @RequestBody Map<String, Object> map) {
        Map<String, Object> result = new HashMap<String, Object>();
        try {

            result.put(DATASUCCESS, SUCCESSFLAG);
            result.put(DATAMESSAGE, QUERY_SUCCESS_MSG);
            result.put(DATALIST, proOrgService.getAllOrg(map));
        } catch (Exception e) {
            result.put(DATASUCCESS, ERRORFLAG);
            result.put(DATAMESSAGE, QUERY_FAIL_MSG + e.getMessage());
        }
        return result;
    }

}
