package com.goldenwater.slgc.service.impl;

import java.util.List;
import java.util.Map;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.goldenwater.common.utils.StringUtils;
import com.goldenwater.slgc.domain.AttPustBase;
import com.goldenwater.slgc.mapper.AttPustBaseMapper;
import com.goldenwater.slgc.service.PustService;

/** 水闸信息 业务实现 */
@Service
public class PustServiceImpl implements PustService {
    @Autowired
    private AttPustBaseMapper attPustBaseMapper;

    @Override
    public List<AttPustBase> selectAttPustBaseList(AttPustBase attPustBase) {
        return attPustBaseMapper.selectAttPustBaseList(attPustBase);
    }

    @Override
    public AttPustBase selectAttPustBaseById(String pustCode) {
        return attPustBaseMapper.selectAttPustBaseById(pustCode);
    }

    @Override
    public int deleteAttPustBaseByIds(String[] pustCodes) {
        return attPustBaseMapper.deleteAttPustBaseByIds(pustCodes);
    }

    @Override
    public int insertAttPustBase(AttPustBase attPustBase) {
        if (attPustBase.getCollDate() == null) {
            attPustBase.setCollDate(new Date());
        }
        return attPustBaseMapper.insertAttPustBase(attPustBase);
    }

    @Override
    public int updateAttPustBase(AttPustBase attPustBase) {
        attPustBase.setUpdDate(new Date());
        return attPustBaseMapper.updateAttPustBase(attPustBase);
    }

    @Override
    public List<Map<String, Object>> countType() {
        return attPustBaseMapper.countType();
    }

    @Override
    public String importPust(List<AttPustBase> list) {
        if (list == null || list.isEmpty()) {
            return "导入数据为空";
        }
        int successNum = 0;
        int updateNum = 0;
        int skipNum = 0;
        int failureNum = 0;
        StringBuilder errorMsg = new StringBuilder();
        StringBuilder failureMsg = new StringBuilder();
        for (AttPustBase attPustBase : list) {
            try {
                if (attPustBase.getCollDate() == null) {
                    attPustBase.setCollDate(new Date());
                }
                if (StringUtils.isEmpty(attPustBase.getPustCode())) {
                    skipNum++;
                    continue;
                }
                AttPustBase existing = attPustBaseMapper.selectAttPustBaseById(attPustBase.getPustCode());
                if (existing != null) {
                    attPustBase.setUpdDate(new Date());
                    attPustBaseMapper.updateAttPustBase(attPustBase);
                    updateNum++;
                } else {
                    attPustBaseMapper.insertAttPustBase(attPustBase);
                    successNum++;
                }
            } catch (Exception e) {
                failureNum++;
                failureMsg.append("<br/>" + failureNum + "、" + attPustBase.getPustName() + " 导入失败：" + e.getMessage());
            }
        }
        errorMsg.append("导入成功：").append(successNum).append("条，更新：").append(updateNum).append("条");
        if (skipNum > 0) {
            errorMsg.append("，跳过（编码为空）：").append(skipNum).append("条");
        }
        if (failureNum > 0) {
            errorMsg.append("，失败：").append(failureNum).append("条");
            errorMsg.append("<br/>失败明细：").append(failureMsg);
        }
        return errorMsg.toString();
    }
}
