package com.hssx.cloudmodel.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hssx.cloudmodel.entity.Company; import com.hssx.cloudmodel.entity.Mould; import com.hssx.cloudmodel.entity.Part; import com.hssx.cloudmodel.entity.User; import com.hssx.cloudmodel.entity.vo.PartVO; import com.hssx.cloudmodel.entity.vo.UserVO; import com.hssx.cloudmodel.mapper.MouldMapper; import com.hssx.cloudmodel.mapper.PartMapper; import com.hssx.cloudmodel.mapper.UserMapper; import com.hssx.cloudmodel.service.PartService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hssx.cloudmodel.util.HttpRespMsg; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** *

* 服务实现类 *

* * @author 吴涛涛 * @since 2019-08-13 */ @Service public class PartServiceImpl extends ServiceImpl implements PartService { @Resource PartMapper partMapper; @Resource UserMapper userMapper; @Resource MouldMapper mouldMapper; @Override public HttpRespMsg importPartExcel(MultipartFile file, UserVO userVO) throws IOException, InvalidFormatException { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); if(user != null){ List parts = partMapper.selectList(new QueryWrapper().eq("mould_id",userVO.getMouldId())); // try { File f = null; if ("".equals(file) || file.getSize() <= 0) { file = null; } else { //获取输入流 InputStream ins = file.getInputStream(); //新建一个文件 f = new File(file.getOriginalFilename()); //输入流转file inputStreamToFile(ins, f); } Mould mould = mouldMapper.selectById(userVO.getMouldId()); //根据文件创建工作簿 XSSFWorkbook wookbook = new XSSFWorkbook(f); XSSFSheet sheet = wookbook.getSheetAt(0); int s = sheet.getLastRowNum(); System.out.println("s==========>"+s); // 遍历当前sheet中的所有行,第一行是数据对应的字段,不是数据, // 故从第二行开始遍历拿数据(如果有标题的话,则从第三行开始拿数据) for (int j = 1; j < sheet.getLastRowNum() + 1; j++) { XSSFRow row = sheet.getRow(j); //新建零件 Part part = new Part(); part.setMouldId(mould.getId()); // 遍历所有的列,下面的10是excle表格里共有10列即对应了10个字段 for (int y = 0; y < 2; y++) { XSSFCell cell = row.getCell(y); cell.setCellType(Cell.CELL_TYPE_STRING); //取出当前列的值 String value = cell.getStringCellValue(); //判断第几列插入数据,后面就是从列中取数据往对象里放,然后插入到数据库里 if (value == null && "".equals(value)) { log.error("数据不可为空"); msg.setError("数据不可为空"); return msg; } else if (y == 0) { //零件编号 for (Part p : parts) { if(value.equals(p.getPartNo())){ msg.setError("第"+j+"行的零件编号:"+value+"已被占用,请修改后重新上传"); return msg; } } part.setPartNo(value); } else if (y == 1) { //零件名称 part.setPartName(value); } else if (y == 2) { //零件寿命 part.setPartLife(Integer.parseInt(value)); if(Integer.parseInt(value)().eq("part_no", part.getPartNo())); if ((m != null && m.getId() == part.getId()) || m == null) { partMapper.updateById(part); } else { msg.setError("当前模具编号已存在,请重新输入其他模具编号"); } }else{ //添加 Mould mould = mouldMapper.selectById(userVO.getMouldId()); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); if(part.getPartLife()().eq("head_imgurl", userVO.getToken())); if(user != null){ List list = new ArrayList<>(); list = partMapper.selectPartFileByMouldId(userVO); msg.data = list; }else{ msg.setError("用户不存在或者未登录"); } return msg; } /** * 输入流转file * * @param ins * @param file */ public static void inputStreamToFile(InputStream ins, File file) { try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); } catch (Exception e) { e.printStackTrace(); } } }