package com.zjrs.zwnw.sxgl.bpo.impl;

import org.apache.commons.lang.StringUtils;
import org.mohrss.leaf.core.framework.domain.bpo.impl.BPOImpl;
import org.mohrss.leaf.core.framework.persistens.PageResult;
import com.zjrs.zwnw.sxgl.blo.JcsxqdkBLO;
import com.zjrs.zwnw.sxgl.bpo.JcsxqdkBPO;
import com.zjrs.zwnw.sxgl.dto.SxExportQueryDTO;
import com.zjrs.zwnw.sxgl.dto.SxpzxxXsUpdateDTO;
import com.zjrs.zwnw.sxgl.dto.SxtempQueryDTO;
import org.springframework.stereotype.Service;

import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

@Service
public class JcsxqdkBPOimpl extends BPOImpl implements JcsxqdkBPO {
    @Resource
    private JcsxqdkBLO jcsxqdkBLO;

    @Override
    public PageResult getDrjgtj(SxtempQueryDTO dto, int page, int rows) {
        return this.jcsxqdkBLO.getDrjgtj(dto, page, rows);
    }

    @Override
    public PageResult getDrjgList(SxtempQueryDTO dto, int page, int rows) {
        return this.jcsxqdkBLO.getDrjgList(dto, page, rows);
    }

    @Override
    public void exportSx(SxExportQueryDTO dto, HttpServletResponse res) {
        this.jcsxqdkBLO.exportSx(dto, res);
    }

    @Override
    public Map<String, String> importSx(InputStream is) throws Exception {
        return this.jcsxqdkBLO.importSx(is);
    }

    @Override
    public Map<String, String> saveSxjbxx(SxpzxxXsUpdateDTO dto) {
        Map<String, String> resultMap = new HashMap<>();

        StringBuilder errMsg = new StringBuilder();
        if (StringUtils.isBlank(dto.getSxmc())) {
            errMsg.append("事项名称不能为空。");
        } else {
            dto.setSxmc(dto.getSxmc().trim());
            if (getLength(dto.getSxmc()) > 100) {
                errMsg.append("“事项名称”").append("列内容超出长度限制，最多录入50个汉字或100个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getJbbm())) {
            errMsg.append("基本编码不能为空。");
        } else {
            if (dto.getJbbm().getBytes().length > 20) {
                errMsg.append("“基本编码”").append("列内容超出长度限制，最多录入20个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getSsbm())) {
            errMsg.append("实施编码不能为空。");
        } else {
            if (dto.getSsbm().getBytes().length > 50) {
                errMsg.append("“实施编码”").append("列内容超出长度限制，最多录入50个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getSxlx())) {
            errMsg.append("事项类型不能为空。");
        }
        if (StringUtils.isBlank(dto.getFdbjsx())) {
            errMsg.append("法定办结时限不能为空。");
        } else {
            dto.setFdbjsx(dto.getFdbjsx().trim());
            if (getLength(dto.getFdbjsx()) > 3) {
                errMsg.append("“法定办结时限”").append("内容超出长度限制，最多录入3个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getFdbjsxdw())) {
            errMsg.append("法定办结时限单位不能为空。");
        }
        if (dto.getBlsx() == null) {
            errMsg.append("承诺办理时限不能为空。");
        } else {
            if (dto.getBlsx().toString().getBytes().length > 3) {
                errMsg.append("“承诺办理时限”").append("内容超出长度限制，最多录入3个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getCnbjsxdw())) {
            errMsg.append("承诺办结时限单位不能为空。");
        }
        if (StringUtils.isBlank(dto.getDxccs())) {
            errMsg.append("到现场次数不能为空。");
        }
        if (StringUtils.isBlank(dto.getSfzcwlkd())) {
            errMsg.append("是否支持物流快递不能为空。");
        }
        if (StringUtils.isBlank(dto.getSsbmmc())) {
            errMsg.append("实施部门名称不能为空。");
        }
        if (StringUtils.isBlank(dto.getSltj())) {
            errMsg.append("受理条件不能为空。");
        } else {
            dto.setSltj(dto.getSltj().trim());
            if (getLength(dto.getSltj()) > 4000) {
                errMsg.append("“受理条件”").append("内容超出长度限制，最多录入2000个汉字或4000个字符；");
            }
        }
        if (StringUtils.isNotBlank(dto.getSdyj())) {
            dto.setSdyj(dto.getSdyj().trim());
            if (getLength(dto.getSdyj()) > 4000) {
                errMsg.append("“设定依据”").append("内容超出长度限制，最多录入2000个汉字或4000个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getBjlx())) {
            errMsg.append("办件类型不能为空。");
        }
        if (StringUtils.isBlank(dto.getSxbb())) {
            errMsg.append("事项版本不能为空。");
        }
        if (errMsg.length() > 0) {
            resultMap.put("code", "1");
            resultMap.put("msg", errMsg.toString());
        } else {
            resultMap = this.jcsxqdkBLO.saveSxjbxx(dto);
        }
        return resultMap;
    }

    private int getLength(String str) {
        int length = 0;
        if (StringUtils.isNotBlank(str)) {
            try {
                length = str.trim().getBytes("GBK").length;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return length;
    }
}
