CZT
2023-09-06 71c4fa1e27f75ae4b765c95c67a3069c84dc72ba
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
package com.ld.igds.three.service.impl;
 
import com.alibaba.fastjson.JSONObject;
import com.ld.igds.common.CoreThreeService;
import com.ld.igds.constant.DepotType;
import com.ld.igds.grain.dto.GrainData;
import com.ld.igds.grain.service.CoreGrainService;
import com.ld.igds.models.ThreeConf;
import com.ld.igds.three.ThreeCodeEnum;
import com.ld.igds.three.ThreeConstant;
import com.ld.igds.three.data.Data2001;
import com.ld.igds.three.data.ThreeResponse;
import com.ld.igds.three.mapper.ThreeMapper;
import com.ld.igds.three.param.ThreeCommonParam;
import com.ld.igds.three.param.ThreeRequest;
import com.ld.igds.three.service.ThreeService;
import com.ld.igds.three.util.ThreeRespUtil;
import com.ld.igds.three.util.ThreeUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 2001-仓库粮情接口实现
 *
 * @author chen
 */
@Service
public class ThreeServiceImpl2001 implements ThreeService {
 
    @Autowired
    private CoreThreeService commonService;
    @Autowired
    private ThreeMapper threeMapper;
    @Autowired
    private CoreGrainService grainService;
    @Autowired
    private ThreeUtil threeUtil;
 
    @Override
    public String getInterfaceId() {
        return ThreeConstant.API_THREE_2001;
    }
 
    @SuppressWarnings("unchecked")
    @Override
    public ThreeResponse<Object> execute(ThreeRequest<JSONObject> req){
        //转化请求参数
        ThreeCommonParam param = JSONObject.parseObject(req.getData().toString(), ThreeCommonParam.class);
 
        //判断uid
        if(StringUtils.isEmpty(param.getUid())){
            return ThreeRespUtil.error(ThreeCodeEnum.CODE_1005, req);
        }
 
        List<Data2001> list = new ArrayList<>();
        Data2001 data2001;
        //缓存获取粮情信息
        Map<String, GrainData> grainMap = grainService.getCacheGrainDateMap(req.getCompanyId(), req.getDeptId());
        if(grainMap == null){
            //从数据库获取
            grainMap = getGrainAll(req.getCompanyId());
        }
 
        if(grainMap.isEmpty()){
            return ThreeRespUtil.success(list, req);
        }
 
        //根据uid判断查询所有仓库粮情还是单个仓库粮情
        if(ThreeConstant.REQUEST_UID.equals(param.getUid())){
            //获取全部三维配置信息
            List<ThreeConf> threeList = commonService.getCacheThreeAll(req.getCompanyId());
            if(threeList == null || threeList.isEmpty()){
                return ThreeRespUtil.error(ThreeCodeEnum.CODE_1111, "未查询相关三维配置信息,请联系管理员!", req);
            }
 
            //返回数据处理
            for (ThreeConf threeConf : threeList) {
                if(StringUtils.isEmpty(threeConf.getDeviceId()) &&
                        StringUtils.isNotEmpty(threeConf.getDepotId())){
                    GrainData grainData = grainMap.get(threeConf.getDepotId());
                    if(grainData != null){
                        data2001 = getData(grainData, threeConf.getUid());
                        list.add(data2001);
                    }
                }
            }
        }else {
            //根据uid获取三维配置信息
            ThreeConf threeConf = commonService.getCacheThreeConfById(req.getCompanyId(), param.getUid());
            if(threeConf == null){
                return ThreeRespUtil.error(ThreeCodeEnum.CODE_1111, "未查询到此uid的配置信息,请联系管理员!", req);
            }
 
            GrainData grainData = grainMap.get(threeConf.getDepotId());
            if(grainData != null){
                data2001 = getData(grainData, threeConf.getUid());
                list.add(data2001);
            }
 
        }
        return ThreeRespUtil.success(list, req);
    }
 
    /**
     * 数据封装
     * @param grainData
     * @param uid
     * @return
     */
    private Data2001 getData(GrainData grainData, String uid){
        Data2001 data = new Data2001();
 
        data.setUid(uid);
        data.setType(threeUtil.getDepotType(grainData.getCompanyId(), grainData.getDepotId()));
        data.setTime(grainData.getReceiveDate());
        data.setOutT(grainData.getTempOut());
        data.setOutH(grainData.getHumidityOut());
        data.setInT(grainData.getTempIn());
        data.setInH(grainData.getHumidityIn());
        data.setMaxT(grainData.getTempMax());
        data.setMinT(grainData.getTempMin());
        data.setAveT(grainData.getTempAve());
        if(DepotType.TYPE_03.getCode().equals(data.getType()) && StringUtils.isNotEmpty(grainData.getOilHeight())){
            data.setOilHeight(grainData.getOilHeight().split("-")[0]);
            data.setDepotHeight(grainData.getOilHeight().split("-")[1]);
        }
        data.setCheckUser(grainData.getCheckUser());
 
        return data;
    }
 
    /**
     * 从数据库查询粮情,并转为map集合
     * @param companyId
     * @return
     */
    private Map<String, GrainData> getGrainAll(String companyId){
 
        List<GrainData> grainAll = threeMapper.getGrainAll(companyId);
 
        Map<String, GrainData> map = new HashMap<>();
 
        if(grainAll != null && grainAll.size() > 0){
            for (GrainData grainData : grainAll) {
                map.put(grainData.getDepotId(),grainData);
            }
        }
        return map;
    }
 
}