YYC
2026-03-02 df8646d27148573510e6c0ab0230a09133df1454
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
package com.fzzy.igds.app.v1.service.impl;
 
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.igds.app.v1.constant.PhoneConstant;
import com.fzzy.igds.app.v1.data.AuthUser;
import com.fzzy.igds.app.v1.data.ParamDepot;
import com.fzzy.igds.app.v1.data.PhoneRequest;
import com.fzzy.igds.app.v1.data.PhoneResponse;
import com.fzzy.igds.app.v1.dto.PDetailDto;
import com.fzzy.igds.app.v1.dto.PGrainDto;
import com.fzzy.igds.app.v1.dto.PPointDto;
import com.fzzy.igds.app.v1.service.PhoneService;
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
import com.fzzy.igds.app.v1.util.PhoneUtil;
import com.fzzy.igds.data.GrainData;
import com.fzzy.igds.data.GrainLay;
import com.fzzy.igds.data.GrainParam;
import com.fzzy.igds.data.GrainPoint;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.DepotConf;
import com.fzzy.igds.domain.Grain;
import com.fzzy.igds.service.DepotConfService;
import com.fzzy.igds.service.DepotService;
import com.fzzy.igds.service.GrainService;
import com.fzzy.igds.utils.GrainDataBuilder;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * @Author: YYC
 * @Description: 粮情数据查看-平房仓粮情接口
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5205 implements PhoneService {
 
    @Autowired
    private PhoneUtil phoneUtil;
    @Autowired
    private GrainService grainService;
    @Autowired
    private DepotService depotService;
    @Autowired
    private DepotConfService depotConfService;
 
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5205;
    }
 
    @Override
    public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
        ParamDepot param = JSONObject.parseObject(req.getData().toString(), ParamDepot.class);
        if (null == param) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        //参数验证
        if (StringUtils.isEmpty(param.getDeptId()) || StringUtils.isEmpty(param.getDepotId())) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        GrainParam grainParam = new GrainParam();
        grainParam.setDeptId(param.getDeptId());
        grainParam.setDepotId(param.getDepotId());
        grainParam.setCompanyId(authUser.getCompanyId());
        grainParam.setLimit(1);//设置默认只获取一条数据
 
        //查询粮情数据
        List<Grain> list = grainService.listData(grainParam);
 
        Depot depot = depotService.getCacheDepot(authUser.getCompanyId(), param.getDepotId());
        if (null == list || list.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_2000, req, "该仓库暂无粮情数据!");
        }
        DepotConf depotConf;
        GrainData data;
        Depot depotData;
        List<GrainData> result = new ArrayList<>();
        for (Grain grain : list) {
            depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId());
            data = new GrainData();
            BeanUtils.copyProperties(grain, data);
            // 添加仓库信息
            depotData = depotService.getCacheDepot(param.getCompanyId(), param.getDepotId());
            GrainDataBuilder.updateGrainData(data, depotConf, depotData.getDepotType());
            result.add(data);
        }
 
        //取最近时间的粮情数据
        GrainData grainData = result.get(0);
 
        //转换响应数据
        PGrainDto dto = new PGrainDto();
        dto.setDepotId(grainData.getDepotId());
        dto.setDepotName(phoneUtil.getDepotName(authUser.getCompanyId(), dto.getDepotId()));
        dto.setDepotType(depot.getDepotType());
        dto.setReceiveDate(grainData.getReceiveDate());
        dto.setTempIn(grainData.getTempIn());
        dto.setHumidityIn(grainData.getHumidityIn());
        dto.setTempOut(grainData.getTempOut());
        dto.setHumidityOut(grainData.getHumidityOut());
        dto.setTempMax(grainData.getTempMax());
        dto.setTempMin(grainData.getTempMin());
        dto.setTempAve(grainData.getTempAve());
        dto.setCable(grainData.getCable().replaceAll(",","-"));
        if(StringUtils.isNotEmpty(grainData.getCableCir())){
            dto.setCableCir(grainData.getCableCir().replaceAll(",", "-"));
        }
 
        List<PPointDto> listPoints = new ArrayList<>();
        PPointDto pointDto;
        for (GrainPoint point : grainData.getListPoints()) {
            pointDto = new PPointDto();
            pointDto.setX(point.getX());
            pointDto.setY(point.getY());
            pointDto.setZ(point.getZ());
            pointDto.setFz(point.getFz());
            pointDto.setTemp(point.getTemp());
            listPoints.add(pointDto);
        }
        dto.setPoints(listPoints);
 
        List<PDetailDto> listDetail = new ArrayList<>();
        PDetailDto detailDto;
 
        for (GrainLay lay : grainData.getListLays()) {
            detailDto = new PDetailDto();
            detailDto.setFz(lay.getFz());
            detailDto.setFzName(lay.getFz() + "层");
            detailDto.setTempMax(lay.getTempMax());
            detailDto.setTempMin(lay.getTempMin());
            detailDto.setTempAve(lay.getTempAve());
            listDetail.add(detailDto);
        }
        dto.setDetails(listDetail);
 
        return PhoneRespUtil.success(dto, req);
    }
}