package com.ruoyi.zzb.zdcx.controller;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.zzb.zdcx.domain.Zdcx;
import com.ruoyi.zzb.zdcx.service.ZdcxService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;

@Slf4j
@RestController
@RequestMapping("/api/zdcx")
public class ZdcxController extends BaseController {

    @Autowired
    private ZdcxService zdcxService;

    /**
     * 根据条件分页查询一/多条制度信息
     * @param reqBody
     * @return
     */
    @PostMapping("/query")
    public AjaxResult query(@RequestBody JSONObject reqBody){
        if(null == reqBody.getInteger("queryFlag")){
            log.error("queryFlag参数为空");
            return error("queryFlag参数为空");
        }
        try {
            return success(zdcxService.getDataByPage(reqBody));
        } catch (Exception e){
            log.error("根据条件分页查询制度信息发生异常", e);
            return error("根据条件分页查询制度信息发生异常 - " + e.getMessage());
        }
    }

    /**
     * 保存一条制度信息
     * @param
     * @return
     */
    @PostMapping("/save")
    public AjaxResult save(@RequestBody Zdcx zdcx){
        // 获取当前登录用户信息
        SysUser user = SecurityUtils.getLoginUser().getUser();
        try {
            if(null != user){
                String docId = zdcx.getDocId();
                if(zdcxService.getDataByDocId(docId) == null){
                    if(zdcxService.insertStandardInfo(zdcx, user)){
                        return success(true);
                    }
                }
                return error("制度规范文书号已存在 - docId：" + docId);
            }
            return error("用户信息为空，制度规范信息无法保存");
        } catch (Exception e){
            log.error("【制度查询】制度规范信息保存失败", e);
            return error("【制度查询】制度规范信息保存失败 - " + e.getMessage());
        }
    }


    /**
     * 修改一条【制度查询】制度规范信息记录
     * @param
     * @return
     */
    @PostMapping("/update")
    public AjaxResult update(@RequestBody Zdcx zdcx){
        try {
            String docId = zdcx.getDocId();
            if(StringUtils.isBlank(docId)){
                return error("docId参数为空");
            }
            return zdcxService.updateStandardInfo(zdcx)? success(true) : error("【制度查询】制度规范信息修改失败");
        } catch (Exception e){
            log.error("【制度查询】制度规范信息修改失败", e);
            return error("【制度查询】制度规范信息修改失败 - " + e.getMessage());
        }
    }


    /**
     * 根据docIds（文书号数组）删除一/多条制度规范信息
     * @param reqBody
     * @return
     */
    @PostMapping("/delete")
    public AjaxResult delete(@RequestBody JSONObject reqBody){
        String docIds = reqBody.getString("docIds");
        if(StringUtils.isBlank(docIds) || Arrays.asList(docIds.split(",")).size() == 0){
            return error("docIds参数为空");
        }
        try {
            return zdcxService.delDataByDocId(Arrays.asList(docIds.split(",")))? success(true) : error("制度规范信息删除失败 - 删除失败的文书号：[" + docIds + "]");
        } catch (Exception e){
            log.error("制度规范信息删除失败", e);
            return error("制度规范信息删除失败 - " + e.getMessage());
        }
    }


}
