sgj
2026-03-02 06f4d2f5cc46ffa9402dcb4e6bec08fbab2bcfa6
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
package com.fzzy.igds.app.v1.service.impl;
 
import com.alibaba.fastjson.JSONObject;
import com.fzzy.common.constant.RespCodeEnum;
import com.fzzy.common.utils.DateUtil;
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.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/**
 * @Author: YYC
 * @Description: 粮情数据查看-历史数据(根据页码查询)接口
 * @DateTime: 2026-1-12 14:43
 **/
@Service
public class ServiceImpl5204 implements PhoneService {
 
    @Autowired
    private PhoneUtil phoneUtil;
    @Autowired
    private DepotService depotService;
    @Autowired
    private GrainService coreGrainService;
    @Autowired
    private DepotConfService depotConfService;
 
    @Override
    public String getInterfaceId() {
        return PhoneConstant.API_PHONE_5204;
    }
 
    @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()) || null == param.getDateTime()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
        }
        GrainParam grainParam = new GrainParam();
        grainParam.setDepotId(param.getDepotId());
        grainParam.setCompanyId(authUser.getCompanyId());
        Date date = DateUtils.parseDate(param.getDateTime(), "yyyy-MM");
        //设置查询时间,月的第一天到最后一天
        grainParam.setStart(DateUtil.getMonthFirst(date));
        grainParam.setEnd(DateUtil.getNextMonthFirst(date));
        grainParam.setDeptId(param.getDeptId());
 
        //查询粮情数据
        List<Grain> list = coreGrainService.listData(grainParam);
        Depot depot = depotService.getCacheDepot(authUser.getCompanyId(), param.getDepotId());
        if (null == list || list.isEmpty()) {
            return PhoneRespUtil.error(RespCodeEnum.CODE_1005, "该仓库暂无粮情数据!");
        }
 
        //返回数据封装
        List<PGrainDto> dtoList = new ArrayList<>();
        PGrainDto dto;
        List<PPointDto> listPoints;
        List<PDetailDto> listDetail;
        PPointDto pointDto;
        PDetailDto detailDto;
 
        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);
        }
        for (GrainData grainData : result) {
            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(",", "-"));
            }
 
            listPoints = new ArrayList<>();
            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);
 
            listDetail = new ArrayList<>();
            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);
 
            dtoList.add(dto);
        }
        return PhoneRespUtil.success(dtoList, req);
    }
}