PartServiceImpl.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.hssx.cloudmodel.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.hssx.cloudmodel.entity.Company;
  4. import com.hssx.cloudmodel.entity.Mould;
  5. import com.hssx.cloudmodel.entity.Part;
  6. import com.hssx.cloudmodel.entity.User;
  7. import com.hssx.cloudmodel.entity.vo.PartVO;
  8. import com.hssx.cloudmodel.entity.vo.UserVO;
  9. import com.hssx.cloudmodel.mapper.MouldMapper;
  10. import com.hssx.cloudmodel.mapper.PartMapper;
  11. import com.hssx.cloudmodel.mapper.UserMapper;
  12. import com.hssx.cloudmodel.service.PartService;
  13. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14. import com.hssx.cloudmodel.util.HttpRespMsg;
  15. import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
  16. import org.apache.poi.ss.usermodel.Cell;
  17. import org.apache.poi.xssf.usermodel.XSSFCell;
  18. import org.apache.poi.xssf.usermodel.XSSFRow;
  19. import org.apache.poi.xssf.usermodel.XSSFSheet;
  20. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import javax.annotation.Resource;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.io.*;
  27. import java.text.SimpleDateFormat;
  28. import java.util.ArrayList;
  29. import java.util.Date;
  30. import java.util.List;
  31. /**
  32. * <p>
  33. * 服务实现类
  34. * </p>
  35. *
  36. * @author 吴涛涛
  37. * @since 2019-08-13
  38. */
  39. @Service
  40. public class PartServiceImpl extends ServiceImpl<PartMapper, Part> implements PartService {
  41. @Resource
  42. PartMapper partMapper;
  43. @Resource
  44. UserMapper userMapper;
  45. @Resource
  46. MouldMapper mouldMapper;
  47. @Override
  48. public HttpRespMsg importPartExcel(MultipartFile file, UserVO userVO) throws IOException, InvalidFormatException {
  49. HttpRespMsg msg = new HttpRespMsg();
  50. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  51. if(user != null){
  52. List<Part> parts = partMapper.selectList(new QueryWrapper<Part>().eq("mould_id",userVO.getMouldId()));
  53. // try {
  54. File f = null;
  55. if ("".equals(file) || file.getSize() <= 0) {
  56. file = null;
  57. } else {
  58. //获取输入流
  59. InputStream ins = file.getInputStream();
  60. //新建一个文件
  61. f = new File(file.getOriginalFilename());
  62. //输入流转file
  63. inputStreamToFile(ins, f);
  64. }
  65. Mould mould = mouldMapper.selectById(userVO.getMouldId());
  66. //根据文件创建工作簿
  67. XSSFWorkbook wookbook = new XSSFWorkbook(f);
  68. XSSFSheet sheet = wookbook.getSheetAt(0);
  69. int s = sheet.getLastRowNum();
  70. System.out.println("s==========>"+s);
  71. // 遍历当前sheet中的所有行,第一行是数据对应的字段,不是数据,
  72. // 故从第二行开始遍历拿数据(如果有标题的话,则从第三行开始拿数据)
  73. for (int j = 1; j < sheet.getLastRowNum() + 1; j++) {
  74. XSSFRow row = sheet.getRow(j);
  75. System.out.println("row====>"+row);
  76. //新建零件
  77. Part part = new Part();
  78. part.setMouldId(mould.getId());
  79. // 遍历所有的列,下面的10是excle表格里共有10列即对应了10个字段
  80. for (int y = 0; y < 2; y++) {
  81. XSSFCell cell = row.getCell(y);
  82. System.out.println("cell====>"+row);
  83. cell.setCellType(Cell.CELL_TYPE_STRING);
  84. //取出当前列的值
  85. String value = cell.getStringCellValue();
  86. //判断第几列插入数据,后面就是从列中取数据往对象里放,然后插入到数据库里
  87. if (value == null && "".equals(value)) {
  88. log.error("数据不可为空");
  89. msg.setError("数据不可为空");
  90. return msg;
  91. } else if (y == 0) {
  92. //零件编号
  93. for (Part p : parts) {
  94. if(value.equals(p.getPartNo())){
  95. msg.setError("第"+j+"行的零件编号:"+value+"已被占用,请修改后重新上传");
  96. return msg;
  97. }
  98. }
  99. part.setPartNo(value);
  100. } else if (y == 1) {
  101. //零件名称
  102. part.setPartName(value);
  103. } else if (y == 2) {
  104. //零件寿命
  105. part.setPartLife(Integer.parseInt(value));
  106. if(Integer.parseInt(value)<mould.getSettingLife()){
  107. part.setIsVulnerable(1);
  108. }
  109. part.setPartLife(Integer.parseInt(value));
  110. }
  111. }
  112. part.setCreatorId(user.getId());
  113. part.setCreator(user.getUsername());
  114. partMapper.insert(part);
  115. }
  116. // } catch (Exception e) {
  117. // log.error(e.getMessage(), e);
  118. // msg.setError(e.getMessage());
  119. // return msg;
  120. // }
  121. }else{
  122. msg.setError("用户不存在或者未登录");
  123. }
  124. return msg;
  125. }
  126. @Override
  127. public HttpRespMsg add(Part part, UserVO userVO) {
  128. HttpRespMsg msg = new HttpRespMsg();
  129. if(part.getId() != null){
  130. //修改
  131. Part m = partMapper.selectOne(new QueryWrapper<Part>().eq("part_no", part.getPartNo()));
  132. if ((m != null && m.getId() == part.getId()) || m == null) {
  133. partMapper.updateById(part);
  134. } else {
  135. msg.setError("当前模具编号已存在,请重新输入其他模具编号");
  136. }
  137. }else{
  138. //添加
  139. Mould mould = mouldMapper.selectById(userVO.getMouldId());
  140. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  141. if(part.getPartLife()<mould.getSettingLife()){
  142. part.setIsVulnerable(1);
  143. }
  144. part.setCreatorId(user.getId());
  145. part.setCreator(user.getUsername());
  146. partMapper.insert(part);
  147. }
  148. return msg;
  149. }
  150. @Override
  151. public HttpRespMsg getList(UserVO userVO) {
  152. HttpRespMsg msg = new HttpRespMsg();
  153. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  154. if(user != null){
  155. List<PartVO> list = new ArrayList<>();
  156. list = partMapper.selectPartFileByMouldId(userVO);
  157. msg.data = list;
  158. }else{
  159. msg.setError("用户不存在或者未登录");
  160. }
  161. return msg;
  162. }
  163. /**
  164. * 输入流转file
  165. *
  166. * @param ins
  167. * @param file
  168. */
  169. public static void inputStreamToFile(InputStream ins, File file) {
  170. try {
  171. OutputStream os = new FileOutputStream(file);
  172. int bytesRead = 0;
  173. byte[] buffer = new byte[8192];
  174. while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
  175. os.write(buffer, 0, bytesRead);
  176. }
  177. os.close();
  178. ins.close();
  179. } catch (Exception e) {
  180. e.printStackTrace();
  181. }
  182. }
  183. }