2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-04-20 312224aeab92015542dd1396d349c5e68adb570e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package com.sandu.ximon.admin.service;
 
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.param.C3mChargingChargeParam;
import com.sandu.ximon.dao.domain.C3mChargingCharge;
import com.sandu.ximon.dao.domain.PoleBinding;
import com.sandu.ximon.dao.mapper.C3mChargingChargeMapper;
import com.sandu.ximon.dao.mapper.C3mChargingMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
 
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
 
/**
 * @Author liuhaonan
 * @Date 2022/3/10 13:58
 * @Version 1.0
 * c3充电桩费率相关
 */
@Service
@AllArgsConstructor
public class C3mChargingChargeService extends BaseServiceImpl<C3mChargingChargeMapper, C3mChargingCharge> {
    private final C3mChargingChargeMapper c3mChargingChargeMapper;
    private final PoleBindingService bindingService;
    private final C3mChargingMapper chargingMapper;
 
    /**
     * 修改费率
     *
     * @param chargeEntities
     * @param
     * @return
     */
    public boolean updateCharge(List<C3mChargingCharge> chargeEntities) {
        //  删除原本存在的费率
        c3mChargingChargeMapper.deleteCharge(chargeEntities.get(0).getC3Id());
        Long timestamp = new Date().getTime();
        //  将费率添加至数据库
        for (C3mChargingCharge c3m : chargeEntities) {
            c3m.setTimestamp(timestamp);
            save(c3m);
        }
//        LogService.getBean().log(userId,username,"修改C3m费率",null,
//                "{ "+ JSON.toJSONString(chargeEntities)+" }");
        return true;
    }
 
    /**
     * 插入费率
     *
     * @param c3
     * @return
     */
    public boolean initCharge(C3mChargingChargeParam c3) {
        C3mChargingCharge charge = new C3mChargingCharge();
        BeanUtil.copyProperties(c3, charge);
        charge.setTimestamp(new Date().getTime());
//        c3mChargingChargeMapper.insertCharge(charge);
        return save(charge);
    }
 
    /**
     * 自动插入默认费率
     *
     * @param c3Id
     */
    public void initCharge(Integer c3Id) {
        List<C3mChargingCharge> chargeList = getChargeByC3Id(c3Id);
        if (chargeList.size() == 0) {
            //  不存在费率时,生成单个费率并插入数据库
            C3mChargingCharge c3mChargeEntity = new C3mChargingCharge();/*C3mChargingCharge.getInitInstance(c3Id);*/
            c3mChargeEntity.setC3Id(c3Id);
            c3mChargeEntity.setHour(0);
            c3mChargeEntity.setMin(0);
            c3mChargeEntity.setCharge(8.8);
            c3mChargeEntity.setTimestamp(new Date().getTime());
            c3mChargingChargeMapper.insertCharge(c3mChargeEntity);
        }
    }
 
 
    public List<C3mChargingCharge> getChargeByC3Id(Integer c3Id) {
        //  查找数据库所有费率
        List<C3mChargingCharge> list = c3mChargingChargeMapper.getChargeByC3Id(c3Id);
        //  判断list为单条直接返回
        if (list.size() < 2) {
            return list;
        }
        //  将时分进行排序
        Collections.sort(list, new Comparator<C3mChargingCharge>() {
            @Override
            public int compare(C3mChargingCharge o1, C3mChargingCharge o2) {
                int i = o2.getHour().compareTo(o1.getHour());
                if (i == 0) {
                    return o2.getMin().compareTo(o1.getMin());
                }
                return i;
            }
 
            @Override
            public boolean equals(Object obj) {
                return false;
            }
        });
        //  list翻转
        Collections.reverse(list);
        //  时间段字符拼接
        for (int i = 1; i < list.size(); i++) {
            C3mChargingCharge pre = list.get(i - 1);
            C3mChargingCharge now = list.get(i);
            pre.setStrTime(
                    pre.getHour() + "点" + pre.getMin() + "分 到 " +
                            now.getHour() + "点" + now.getMin() + "分"
            );
            if (i == list.size() - 1) {
                pre = now;
                now = list.get(0);
                if (now.getHour() < pre.getHour()) {
                    pre.setStrTime(
                            pre.getHour() + "点" + pre.getMin() + "分 到 " +
                                    "隔日" + now.getHour() + "点" + now.getMin() + "分"
                    );
                } else {
                    pre.setStrTime(
                            pre.getHour() + "点" + pre.getMin() + "分 到 " +
                                    now.getHour() + "点" + now.getMin() + "分"
                    );
                }
            }
        }
        return list;
 
    }
 
    /**
     * 根据灯杆id查找费率
     *
     * @param poleId
     * @return
     */
    public List<C3mChargingCharge> getChargeByPoleId(Long poleId) {
        PoleBinding one = bindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceType, 2).eq(PoleBinding::getPoleId, poleId));
        if (one == null) {
            throw new BusinessException("未找到绑定关系");
        }
        Long c3Id = chargingMapper.getAllByC3Mac(one.getDeviceCode()).getC3Id();
        return getChargeByC3Id(c3Id.intValue());
    }
 
    public boolean deleteC3mCharging(Integer c3mId) {
        return c3mChargingChargeMapper.deleteCharge(c3mId);
    }
}