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 implements QualityHw19VerifyService { @Autowired private QualityHw19GrossMapper grossMapper; @Override public void insert(QualityHw19Verify qualityHw19Verify) { Integer grossCount = grossMapper.selectCount(Wrappers.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.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 respList = new ArrayList<>(); excelWriter.write(respList, mainSheet); //关闭流 excelWriter.finish(); } catch (IOException e) { throw new RuntimeException("导出失败"); } } @Override public void importExcel(List list) { List 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.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.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); } }