智慧农业后台管理
Administrator
2022-07-01 0ea162c9bbd4e2ac337aae567005369fbc911032
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
package org.springblade.modules.traceability.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.zxing.WriterException;
import org.springblade.common.config.TraceabilityCodeConfig;
import org.springblade.common.utils.QRCodeUtil;
import org.springblade.modules.farm.entity.Farm;
import org.springblade.modules.farm.entity.FarmPaper;
import org.springblade.modules.farm.entity.FarmingRecord;
import org.springblade.modules.farm.service.FarmPaperService;
import org.springblade.modules.farm.service.FarmService;
import org.springblade.modules.farm.service.FarmingRecordService;
import org.springblade.modules.farm.vo.FarmPaperVO;
import org.springblade.modules.farm.vo.FarmVO;
import org.springblade.modules.farm.vo.FarmingRecordVO;
import org.springblade.modules.recovery.service.RecoveryService;
import org.springblade.modules.recovery.vo.RecoveryVO;
import org.springblade.modules.traceability.dto.TraceabilityDTO;
import org.springblade.modules.traceability.dto.TraceabilityDetailDTO;
import org.springblade.modules.traceability.entity.Traceability;
import org.springblade.modules.traceability.mapper.TraceabilityMapper;
import org.springblade.modules.traceability.service.TraceabilityService;
import org.springblade.modules.traceability.vo.TraceabilityVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Encoder;
 
import javax.sound.midi.Receiver;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
 
/**
 * 溯源码表服务实现类
 * @since 2022-05-19
 * @author zhongrj
 */
@Service
public class TraceabilityServiceImpl extends ServiceImpl<TraceabilityMapper, Traceability> implements TraceabilityService {
 
    @Autowired
    private RecoveryService recoveryService;
 
    @Autowired
    private FarmingRecordService farmingRecordService;
 
    @Autowired
    private FarmService farmService;
 
    @Autowired
    private FarmPaperService farmPaperService;
 
    /**
     * 自定义分页
     *
     * @param page
     * @param traceability
     * @return
     */
    @Override
    public IPage<TraceabilityVO> selectTraceabilityPage(IPage<TraceabilityVO> page, TraceabilityVO traceability) {
        return page.setRecords(baseMapper.selectTraceabilityPage(page, traceability));
    }
 
    @Override
    public String selectRevorid(String code) {
        return baseMapper.selectRevorid(code);
    }
 
    /**
     * 获取溯源简介信息
     * @param traceability
     * @return
     */
    @Override
    public TraceabilityDTO getSimpleInfo(Traceability traceability) {
        TraceabilityDTO simpleInfo = baseMapper.getSimpleInfo(traceability);
        simpleInfo.setCode(traceability.getCode());
        //获取二维码信息
        String url = TraceabilityCodeConfig.getCodeUrl();
        String encoded = null;
        try {
            encoded = URLEncoder.encode(traceability.getCode(),"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String content = url + "?code=" + encoded;
        byte[] qrCodeImage = new byte[0];
        try {
            qrCodeImage = QRCodeUtil.getQRCodeImage(content, 350, 350);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        String encode = new BASE64Encoder().encode(qrCodeImage);
        simpleInfo.setQrcode("data:image/png;base64,"+encode);
        //返回
        return simpleInfo;
    }
 
    /**
     * 获取溯源详情信息(包含农产品信息,认证检测信息,产地(地块信息),农事记录,企业信息)
     * @param traceability
     * @return
     */
    @Override
    public TraceabilityDetailDTO getTraceabilityDetailInfo(Traceability traceability) {
        TraceabilityDetailDTO dto = new TraceabilityDetailDTO();
        //根据溯源码编号查询溯源信息
        Traceability traceability1 = baseMapper.selectOne(new QueryWrapper<>(traceability));
        //1. 查询农产品采收记录信息
        RecoveryVO recoveryVO = recoveryService.getRecoveryDetail(traceability1.getRecoveryId());
        //2. 查询相关检测信息
        List<FarmPaperVO> farmPaperList = farmPaperService.getFarmPaperList(traceability1.getDeptId());
        //3. 查询产地(地块)信息
 
        //4. 查询农事记录信息(种植开始起)
        List<FarmingRecordVO> farmingRecordVOList = farmingRecordService.getFarmingRecordByFarmPlantId(recoveryVO);
        //5. 查询企业信息
        Farm farm = new Farm();
        farm.setDeptId(traceability1.getDeptId());
        Farm farmVO = farmService.getOne(new QueryWrapper<>(farm));
        //6. 数据封装
        dto.setRecoveryVO(recoveryVO);
        dto.setFarm(farmVO);
        dto.setRecordVOList(farmingRecordVOList);
        dto.setPaperVOList(farmPaperList);
        //返回数据
        return dto;
    }
}