李林
2023-10-07 658d4927d468c47208fd012d9128b09249c07eff
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
package com.chinaztt.mes.quality.service.impl;
 
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaztt.mes.common.wrapper.QueryWrapperUtil;
import com.chinaztt.mes.quality.entity.QualityHw19Code;
import com.chinaztt.mes.quality.entity.QualityHw19Gross;
import com.chinaztt.mes.quality.entity.QualityHw19Verify;
import com.chinaztt.mes.quality.excel.QualityHw19CodeImportData;
import com.chinaztt.mes.quality.excel.QualityHw19VerData;
import com.chinaztt.mes.quality.excel.QualityHw19VerImportData;
import com.chinaztt.mes.quality.mapper.QualityHw19GrossMapper;
import com.chinaztt.mes.quality.mapper.QualityHw19VerifyMapper;
import com.chinaztt.mes.quality.service.QualityHw19VerifyService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
 
/**
 * 19码防呆校验
 *
 * @author pigx code generator
 * @date 2022-12-02 15:39:32
 */
@Service
public class QualityHw19VerifyServiceImpl extends ServiceImpl<QualityHw19VerifyMapper, QualityHw19Verify> implements QualityHw19VerifyService {
 
    @Autowired
    private QualityHw19GrossMapper grossMapper;
 
    @Override
    public void insert(QualityHw19Verify qualityHw19Verify) {
 
        Integer grossCount = grossMapper.selectCount(Wrappers.<QualityHw19Gross>lambdaQuery().eq(QualityHw19Gross::getBarCode, qualityHw19Verify.getBarCode())
                .eq(QualityHw19Gross::getCodeBox, qualityHw19Verify.getCodeBox()).eq(QualityHw19Gross::getCodeCer, qualityHw19Verify.getCodeCer())
                .eq(QualityHw19Gross::getCodeSize, qualityHw19Verify.getCodeSize()).eq(QualityHw19Gross::getCodeGross, qualityHw19Verify.getCodeGross()));
        if (grossCount == 0) {
            throw new RuntimeException("未找到此匹配关系,请核对!");
        }
        Integer count = this.baseMapper.selectCount(Wrappers.<QualityHw19Verify>lambdaQuery().eq(QualityHw19Verify::getBarCode, qualityHw19Verify.getBarCode())
                .eq(QualityHw19Verify::getCodeBox, qualityHw19Verify.getCodeBox()).eq(QualityHw19Verify::getCodeCer, qualityHw19Verify.getCodeCer()));
        if (count >0) {
            throw new RuntimeException("检验码已存储在匹配表中");
        }
        //sn号,客户物料编码,长度截取新增
        String cusMaterialCode = qualityHw19Verify.getBarCode().split("/")[0];
        String sn = qualityHw19Verify.getCodeCer().split("&")[0];
        String qty = qualityHw19Verify.getCodeCer().split("&")[1];
        qualityHw19Verify.setCusMaterialCode(cusMaterialCode.substring(2,cusMaterialCode.length()));
        qualityHw19Verify.setSn(sn);
        qualityHw19Verify.setQty(new BigDecimal(qty));
        qualityHw19Verify.setIsMatch(1);
        this.baseMapper.insert(qualityHw19Verify);
    }
 
    @Override
    public void exportModel(HttpServletResponse response) throws IOException {
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        String fileName = URLEncoder.encode("19条码防呆校验模板", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            //新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            //获取sheet0对象
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "19条码防呆校验").head(QualityHw19VerImportData.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            List<QualityHw19VerImportData> respList = new ArrayList<>();
            excelWriter.write(respList, mainSheet);
            //关闭流
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
 
 
    @Override
    public void importExcel(List<QualityHw19VerImportData> list) {
        List<QualityHw19Verify> qualityHw19VerifyList = new ArrayList<>();
        for (QualityHw19VerImportData qualityHw19VerImportData : list) {
            if(StringUtils.isBlank(qualityHw19VerImportData.getBarCode())){
                throw new RuntimeException("19条码不能为空");
            }
            if(StringUtils.isBlank(qualityHw19VerImportData.getCodeBox())){
                throw new RuntimeException("箱码不能为空");
            }
            if(StringUtils.isBlank(qualityHw19VerImportData.getCodeCer())){
                throw new RuntimeException("合格证码不能为空");
            }
            if(StringUtils.isBlank(qualityHw19VerImportData.getCodeSize())){
                throw new RuntimeException("尺寸码不能为空");
            }
            if(StringUtils.isBlank(qualityHw19VerImportData.getCodeGross())){
                throw new RuntimeException("毛重码不能为空");
            }
            Integer grossCount = grossMapper.selectCount(Wrappers.<QualityHw19Gross>lambdaQuery().eq(QualityHw19Gross::getBarCode, qualityHw19VerImportData.getBarCode())
                    .eq(QualityHw19Gross::getCodeBox, qualityHw19VerImportData.getCodeBox()).eq(QualityHw19Gross::getCodeCer, qualityHw19VerImportData.getCodeCer())
                    .eq(QualityHw19Gross::getCodeSize, qualityHw19VerImportData.getCodeSize()).eq(QualityHw19Gross::getCodeGross, qualityHw19VerImportData.getCodeGross()));
            if (grossCount == 0) {
                throw new RuntimeException("未找到此匹配关系,请核对!");
            }
            Integer count = this.baseMapper.selectCount(Wrappers.<QualityHw19Verify>lambdaQuery().eq(QualityHw19Verify::getBarCode, qualityHw19VerImportData.getBarCode())
                    .eq(QualityHw19Verify::getCodeBox, qualityHw19VerImportData.getCodeBox()).eq(QualityHw19Verify::getCodeCer, qualityHw19VerImportData.getCodeCer()));
            if (count >0) {
                throw new RuntimeException("检验码已存储在匹配表中");
            }
            QualityHw19Verify qualityHw19Verify = new QualityHw19Verify();
            BeanUtils.copyProperties(qualityHw19VerImportData,qualityHw19Verify);
            //sn号,客户物料编码,长度截取新增
            String cusMaterialCode = qualityHw19Verify.getBarCode().split("/")[0];
            String sn = qualityHw19Verify.getCodeCer().split("&")[0];
            String qty = qualityHw19Verify.getCodeCer().split("&")[1];
            qualityHw19Verify.setCusMaterialCode(cusMaterialCode.substring(2,cusMaterialCode.length()));
            qualityHw19Verify.setSn(sn);
            qualityHw19Verify.setQty(new BigDecimal(qty));
            qualityHw19VerifyList.add(qualityHw19Verify);
        }
        saveBatch(qualityHw19VerifyList);
    }
}