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.SxclwhBLO;
import com.zjrs.zwnw.sxgl.bpo.SxclwhBPO;
import com.zjrs.zwnw.sxgl.dto.SxclwhDTO;
import com.zjrs.zwnw.sxgl.dto.SxclwhDeleteDTO;
import com.zjrs.zwnw.sxgl.dto.SxclwhQueryDTO;
import com.zjrs.zwnw.sxgl.po.SdzlsxPO;
import org.springframework.stereotype.Service;

import jakarta.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

@Service
public class SxclwhBPOimpl extends BPOImpl implements SxclwhBPO {
    @Resource
    private SxclwhBLO sxclwhBLO;

    @Override
    public PageResult querySxclList(SxclwhQueryDTO dto, int page, int rows) {
        return this.sxclwhBLO.querySxclList(dto, page, rows);
    }

    @Override
    public Map<String, String> addSxcl(SxclwhDTO dto) {
        Map<String, String> resultMap = new HashMap<>();
        StringBuilder errStr = new StringBuilder();
        if (StringUtils.isBlank(dto.getZlmc())) {
            errStr.append("材料名称不能为空。");
        } else {
            dto.setZlmc(dto.getZlmc().trim());
            if (getLength(dto.getZlmc()) > 1000) {
                errStr.append("“材料名称”内容超出长度限制，最多录入500个汉字或1000个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getCllb())) {
            errStr.append("材料类别不能为空。");
        }
        if (StringUtils.isBlank(dto.getSfzcdzzz())) {
            errStr.append("是否支持电子证照不能为空。");
        }
        if (errStr.length() > 0) {
            resultMap.put("code", "1");
            resultMap.put("msg", errStr.toString());
        } else {
            this.sxclwhBLO.addSxcl(dto);
            resultMap.put("code", "0");
            resultMap.put("msg", "操作成功");
        }
        return resultMap;
    }

    @Override
    public Map<String, String> deleteSxclByIds(SxclwhDeleteDTO dto) {
        return this.sxclwhBLO.deleteSxclByIds(dto);
    }

    @Override
    public SdzlsxPO getSxclById(SxclwhQueryDTO dto) {
        return this.sxclwhBLO.getSxclById(dto);
    }

    @Override
    public Map<String, String> updateSxcl(SxclwhDTO dto) {
        Map<String, String> resultMap = new HashMap<>();
        StringBuilder errStr = new StringBuilder();
        if (StringUtils.isBlank(dto.getZlmc())) {
            errStr.append("材料名称不能为空。");
        } else {
            dto.setZlmc(dto.getZlmc().trim());
            if (getLength(dto.getZlmc()) > 1000) {
                errStr.append("“材料名称”内容超出长度限制，最多录入500个汉字或1000个字符；");
            }
        }
        if (StringUtils.isBlank(dto.getCllb())) {
            errStr.append("材料类别不能为空。");
        }
        if (StringUtils.isBlank(dto.getSfzcdzzz())) {
            errStr.append("是否支持电子证照不能为空。");
        }
        if (errStr.length() > 0) {
            resultMap.put("code", "1");
            resultMap.put("msg", errStr.toString());
        } else {
            this.sxclwhBLO.updateSxcl(dto);
            resultMap.put("code", "0");
            resultMap.put("msg", "操作成功");
        }
        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;
    }
}
