package com.fastbee.rechargecard.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.fastbee.common.utils.json.JsonStrUtil;
import com.fastbee.common.utils.json.JsonUtils;
import com.fastbee.iot.mapper.DeviceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fastbee.rechargecard.mapper.NgWaterPumpUsageRecordsMapper;
import com.fastbee.rechargecard.domain.NgWaterPumpUsageRecords;
import com.fastbee.rechargecard.service.INgWaterPumpUsageRecordsService;

/**
 * 水泵设备使用记录Service业务层处理
 * 
 * @author kerwincui
 * @date 2024-12-19
 */
@Service
public class NgWaterPumpUsageRecordsServiceImpl implements INgWaterPumpUsageRecordsService 
{
    @Autowired
    private NgWaterPumpUsageRecordsMapper ngWaterPumpUsageRecordsMapper;

    @Autowired
    private DeviceMapper deviceMapper;
    /**
     * 查询水泵设备使用记录
     * 
     * @param id 水泵设备使用记录主键
     * @return 水泵设备使用记录
     */
    @Override
    public NgWaterPumpUsageRecords selectNgWaterPumpUsageRecordsById(Long id)
    {
        return ngWaterPumpUsageRecordsMapper.selectNgWaterPumpUsageRecordsById(id);
    }

    /**
     * 查询水泵设备最细实时数据
     * @param deviceNumber 水泵设备编码
     * @return 水泵设备使用记录
     */
    @Override
    public HashMap<String,Object> selectNgWaterPumpUsageDeviceNumber(String deviceNumber)
    {

        NgWaterPumpUsageRecords result = ngWaterPumpUsageRecordsMapper.selectNgWaterPumpUsageDeviceNumber(deviceNumber);
        NgWaterPumpUsageRecords ngWaterPumpUsageRecords = new NgWaterPumpUsageRecords();
        System.err.println(result);
        HashMap<String,Object> map = new HashMap<String,Object>();
        if (result != null) {
            String message= result.getMessageContent();
            JSONObject jsonObject1 = JSONUtil.parseObj(message);
            String jsonStr = jsonObject1.getStr("data");
            JSONObject jsonObject2 = JSONUtil.parseObj(jsonStr);
            if (jsonObject2.getStr("meterIns")!=null){
                map.put("meterIns",jsonObject2.getStr("meterIns"));
            }else {
                map.put("meterIns",0);
            }
            if (jsonObject2.getStr("meterSum")!=null){
                map.put("meterSum",jsonObject2.getStr("meterSum"));
            }else {
                map.put("meterSum",0);
            }
            System.err.println(jsonStr);
            return map;
        } else {
            map.put("meterIns",0);
            map.put("meterSum",0);
            return map;
        }
    }

    /**
     * 查询水泵设备使用记录列表
     * 
     * @param ngWaterPumpUsageRecords 水泵设备使用记录
     * @return 水泵设备使用记录
     */
    @Override
    public List<NgWaterPumpUsageRecords> selectNgWaterPumpUsageRecordsList(NgWaterPumpUsageRecords ngWaterPumpUsageRecords)
    {
        return ngWaterPumpUsageRecordsMapper.selectNgWaterPumpUsageRecordsList(ngWaterPumpUsageRecords);
    }

    /**
     * 新增水泵设备使用记录
     * 
     * @param ngWaterPumpUsageRecords 水泵设备使用记录
     * @return 结果
     */
    @Override
    public int insertNgWaterPumpUsageRecords(NgWaterPumpUsageRecords ngWaterPumpUsageRecords)
    {
        return ngWaterPumpUsageRecordsMapper.insertNgWaterPumpUsageRecords(ngWaterPumpUsageRecords);
    }

    /**
     * 修改水泵设备使用记录
     * 
     * @param ngWaterPumpUsageRecords 水泵设备使用记录
     * @return 结果
     */
    @Override
    public int updateNgWaterPumpUsageRecords(NgWaterPumpUsageRecords ngWaterPumpUsageRecords)
    {
        return ngWaterPumpUsageRecordsMapper.updateNgWaterPumpUsageRecords(ngWaterPumpUsageRecords);
    }

    /**
     * 批量删除水泵设备使用记录
     * 
     * @param ids 需要删除的水泵设备使用记录主键
     * @return 结果
     */
    @Override
    public int deleteNgWaterPumpUsageRecordsByIds(Long[] ids)
    {
        return ngWaterPumpUsageRecordsMapper.deleteNgWaterPumpUsageRecordsByIds(ids);
    }

    /**
     * 删除水泵设备使用记录信息
     * 
     * @param id 水泵设备使用记录主键
     * @return 结果
     */
    @Override
    public int deleteNgWaterPumpUsageRecordsById(Long id)
    {
        return ngWaterPumpUsageRecordsMapper.deleteNgWaterPumpUsageRecordsById(id);
    }
}
