package com.dxhy.core.service.export.impl;

import com.alibaba.fastjson.JSONObject;
import com.dxhy.common.constant.DbConstant;
import com.dxhy.common.constant.DictConstant;
import com.dxhy.common.datasource.config.DynamicContextHolder;
import com.dxhy.common.service.DictdetaServcice;
import com.dxhy.common.service.impl.MpBaseServiceImpl;
import com.dxhy.common.util.AmountFormatUtil;
import com.dxhy.core.dao.CoreJkszhcxDao;
import com.dxhy.core.model.JkszhcxRespVO;
import com.dxhy.core.service.export.JkszhcxService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

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

/**
 * 海关缴款书综合查询
 *
 * @author jiaohongyang
 */
@SuppressWarnings("AlibabaMethodTooLong")
@Service("jkszhcxService")
@Slf4j

public class JkszhcxServiceImpl extends MpBaseServiceImpl<CoreJkszhcxDao, JkszhcxRespVO> implements JkszhcxService {

    @Resource
    private DictdetaServcice dictdetaServcice;

    @Override
    public JSONObject selectByPramsMap(Map<String, Object> pramsMap, int curr, int size) {
        JSONObject json = new JSONObject();
        DynamicContextHolder.push(pramsMap.get("dbName") + DbConstant.BUSINESS_READ);
        try {
            PageHelper.startPage(curr, size);
            List<JkszhcxRespVO> pageList = super.baseMapper.selectByPramsMap(pramsMap);
            PageInfo<JkszhcxRespVO> pageInfo = new PageInfo<>(pageList);
            json.put("hasNext", pageInfo.isHasNextPage());
            json.put("nextPage", pageInfo.getNextPage());
            // 查询数据字典
            // List<DictdetaModel> auditStatusDictdeta = dictdetaServcice.selectDictdeta("AUDIT_STATUS");
            // List<DictdetaModel> applyCheckDictdeta = dictdetaServcice.selectDictdeta("APPLY_CHECK");
            // List<DictdetaModel> checktatusDictdeta = dictdetaServcice.selectDictdeta("CHECK_STATUS");
            // List<DictdetaModel> bdkStatusDictdeta = dictdetaServcice.selectDictdeta("BDK_STATUS");
            // List<DictdetaModel> glztDictdeta = dictdetaServcice.selectDictdeta("GLZT");
            // List<DictdetaModel> qsztDictdeta = dictdetaServcice.selectDictdeta("qsStatus");
            // List<DictdetaModel> rzztDictdeta = dictdetaServcice.selectDictdeta("rzhYesorno");
            // List<DictdetaModel> rzclztDictdeta = dictdetaServcice.selectDictdeta("authStatus");
            // List<DictdetaModel> qsfsDictdeta = dictdetaServcice.selectDictdeta("qsType");
            // 用于页面返回list对象
            if (pageList.size() > 0) {
                int start = new Long(pageInfo.getStartRow()).intValue();

                for (int i = 0; i < pageList.size(); i++) {
                    pageList.get(i).setXh(String.valueOf((curr - 1) * size + i + 1));
                    if(StringUtils.isNotEmpty(pageList.get(i).getTaxAmount())){
                        pageList.get(i).setTaxAmount(AmountFormatUtil.fmtMicrometer(pageList.get(i).getTaxAmount()));
                    }
                    if(StringUtils.isNotEmpty(pageList.get(i).getYxTaxAmount())){
                        pageList.get(i).setYxTaxAmount(AmountFormatUtil.fmtMicrometer(pageList.get(i).getYxTaxAmount()));
                    }
                    pageList.get(i).setAuditStatus(
                        dictdetaServcice.queryDictName(DictConstant.AUDIT_STATUS, pageList.get(i).getAuditStatus()));
                    pageList.get(i).setApplyCheck(
                        dictdetaServcice.queryDictName(DictConstant.APPLY_CHECK, pageList.get(i).getApplyCheck()));
                    pageList.get(i).setCheckStatus(
                        dictdetaServcice.queryDictName(DictConstant.CHECK_STATUS, pageList.get(i).getCheckStatus()));
                    pageList.get(i).setQsStatus(
                        dictdetaServcice.queryDictName(DictConstant.QS_STATUS, pageList.get(i).getQsStatus()));
                    pageList.get(i).setRzhYesorno(
                        dictdetaServcice.queryDictName(DictConstant.DEDU_STATUS, pageList.get(i).getRzhYesorno()));
                    pageList.get(i).setAuthStatus(
                        dictdetaServcice.queryDictName(DictConstant.AUTH_STATUS_ALL, pageList.get(i).getAuthStatus()));
                    pageList.get(i)
                        .setQsType(dictdetaServcice.queryDictName(DictConstant.QS_TYPE, pageList.get(i).getQsType()));
                    if ("0".equals(pageList.get(i).getBdkStatus())) {
                        pageList.get(i).setBdkStatus("");
                    } else {
                        pageList.get(i).setBdkStatus(
                            dictdetaServcice.queryDictName(DictConstant.BDK_STATUS, pageList.get(i).getBdkStatus()));
                    }
                    pageList.get(i)
                        .setGlzt(dictdetaServcice.queryDictName(DictConstant.GLZT, pageList.get(i).getGlzt()));
                }
            }
            json.put("datalist", pageList);
        } catch (Exception e) {
            // 统一设置操作异常标识
            json = super.errorResult(e);
        }
        return json;
    }

}
