From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:44:19 +0800 Subject: [PATCH] 删除 --- src/main/java/com/gk/firework/Service/ServiceImpl/ProductServiceImpl.java | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 330 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gk/firework/Service/ServiceImpl/ProductServiceImpl.java b/src/main/java/com/gk/firework/Service/ServiceImpl/ProductServiceImpl.java new file mode 100644 index 0000000..9d71453 --- /dev/null +++ b/src/main/java/com/gk/firework/Service/ServiceImpl/ProductServiceImpl.java @@ -0,0 +1,330 @@ +package com.gk.firework.Service.ServiceImpl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gk.firework.Domain.DO.ProductDO; +import com.gk.firework.Domain.Exception.BusinessException; +import com.gk.firework.Domain.ProductCodeInfo; +import com.gk.firework.Domain.ProductInfo; +import com.gk.firework.Domain.StockInfo; +import com.gk.firework.Domain.UserInfo; +import com.gk.firework.Domain.Utils.BeanUtils; +import com.gk.firework.Domain.Utils.PageInfo; +import com.gk.firework.Domain.Utils.StringUtils; +import com.gk.firework.Domain.Vo.DirectionDetail; +import com.gk.firework.Domain.Vo.FireworkDeal; +import com.gk.firework.Domain.Vo.Product2JsonVo; +import com.gk.firework.Domain.Vo.ProductVo; +import com.gk.firework.Mapper.ProductInfoMapper; +import com.gk.firework.Service.ExcelExportService; +import com.gk.firework.Service.ProductCodeService; +import com.gk.firework.Service.ProductService; +import com.gk.firework.Service.StockService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author : jingjy + * @date : 2021/3/16 10:21 + */ +@Service("ProductService") +public class ProductServiceImpl extends ServiceImpl<ProductInfoMapper, ProductInfo> implements ProductService{ + + @Autowired + private ProductInfoMapper productInfoMapper; + @Autowired + private ExcelExportService excelExportService; + @Autowired + private StockService stockService; + @Autowired + private ProductCodeService productCodeService; + + @Override + public List<ProductInfo> selectProductInfos(Map<String, Object>condition) { + List<ProductInfo> productInfos = productInfoMapper.selectProductInfos(condition); + return productInfos; + } + + @Override + public void selectDataGrid(PageInfo pageInfo) { + Page<ProductInfo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); + + List<OrderItem> orderItems = new ArrayList<>(); + OrderItem orderItem = new OrderItem(); + if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) { + orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending")); + orderItem.setColumn(pageInfo.getSort()); + }else { + orderItem.setAsc(false); + orderItem.setColumn("createddate"); + } + orderItems.add(orderItem); + page.setOrders(orderItems); + if (StringUtils.isBlank(pageInfo.getSort())){ + pageInfo.setSort("createddate"); + } + if (StringUtils.isBlank(pageInfo.getOrder())){ + pageInfo.setOrder("desc"); + } + List<ProductInfo> productInfos = productInfoMapper.selectProductDataGrid(pageInfo.getCondition(),page); + pageInfo.setResult(productInfos); + pageInfo.setTotalCount(page.getTotal()); + } + + @Override + public List<ProductInfo> selectByProduct(ProductInfo productInfo) { + if (productInfo == null || StringUtils.isBlank(productInfo.getDirectionCode())) { + return null; + } + return productInfoMapper.selectProductsByDirectionCode(productInfo.getDirectionCode(),productInfo.getCompanyNumber()); + } + + @Override + public boolean hasProductByDire(String directionCode) { + ProductInfo productInfo = productInfoMapper.selectProductByDirectionCode(directionCode); + return productInfo != null; + } + + @Override + public List<String> hasNoProductByCodes(List<String> directionCodes) { + List<String>list = new ArrayList<>(); + for (String dire : directionCodes){ + if (!hasProductByDire(dire)){ + list.add(dire); + } + } + return list; + } + + @Override + public ProductInfo selectByDirection(String dire) { + if (StringUtils.isBlank(dire)|| dire.length() < 10){ + return null; + } + dire = dire.substring(0,10); + return productInfoMapper.selectProductByDirectionCode(dire); + } + + @Override + public ProductVo selectVoByDirection(String dire) { + DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(dire); + ProductInfo productInfo = productInfoMapper.selectProductByDirectionCode(directionDetail.getItemCode()); + if (productInfo == null) return null; + ProductVo productVo = BeanUtils.copy(productInfo, ProductVo.class); + productVo.setDirectionCode(dire); + productVo.setItemCode(directionDetail.getItemCode()); + productVo.setDateCode(directionDetail.getDateCode()); + productVo.setSerialNo(directionDetail.getSerialNo()); + return productVo; + } + + @Override + public String getSlice(String directionCode){ + if (StringUtils.isBlank(directionCode) || directionCode.length() < 10){ + return ""; + } + + Integer slice = productInfoMapper.getSliceByDirectionCode(directionCode.substring(0,10)); + if (slice == null){ + return null; + } + return "_slice"+slice; + } + + @Override + public String getSlice(Long productId){ + if (productId == null){ + return ""; + } + ProductInfo productInfo = productInfoMapper.selectById(productId); + if (productInfo == null){ + return null; + } + Integer slice = productInfoMapper.getSliceByDirectionCode(productInfo.getDirectionCode()); + if (slice == null){ + return null; + } + return "_slice"+slice; + } + + @Override + public void deleteByEnterpriseName(String enterpriseName,String name) { + productInfoMapper.deleteByEnterpriseName(enterpriseName,name); + } + + @Override + public List<Product2JsonVo> transform2Json(String enterprisenumber, MultipartFile file, UserInfo userInfo) { + if (StringUtils.isBlank(enterprisenumber)) { + throw new BusinessException("参数传递错误"); + } + if (file == null || file.getSize() < 1 || file.getOriginalFilename() == null) { + throw new BusinessException("文件上传为空"); + } + + String originalFilename = file.getOriginalFilename(); + try { + byte [] byteArr=file.getBytes(); + InputStream inputStream = new ByteArrayInputStream(byteArr); + boolean isExcel2007 = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).endsWith("xlsx"); + //解析 + List<Product2JsonVo> product2JsonVos = excelExportService.parsingProduct(inputStream, userInfo, isExcel2007, enterprisenumber); + //再做一遍筛查 + assert product2JsonVos.size() > 0; + List<String> stringList = product2JsonVos.stream().map(Product2JsonVo::getDirectionCode) + .collect(Collectors.toList()); + long count = stringList.stream().distinct().count(); + if (stringList.size() == count) { + return product2JsonVos; + } else { + throw new BusinessException("文件中有重复产品在不同行"); + } + + } catch (FileNotFoundException e) { + e.printStackTrace(); + throw new BusinessException("找不到文件"); + } catch (IOException e) { + e.printStackTrace(); + throw new BusinessException("发生错误,请联系管理员"); + } + + } + + + /** + * @Description: 根据产品编号和生产企业编号 查询个数 + * @date 2021/5/24 15:45 + */ + @Override + public int countByEnterpriseNumberAndDirectionCode(String enterprisenumber, String directionCode) { + if (StringUtils.isBlank(enterprisenumber)) { + throw new BusinessException("企业编号不能为空"); + } + if (StringUtils.isBlank(directionCode)) { + throw new BusinessException("产品编号不能为空"); + } + LambdaQueryWrapper<ProductInfo> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProductInfo::getIsDel, (byte) 0). + eq(ProductInfo::getCompanyNumber, enterprisenumber) + .eq(ProductInfo::getDirectionCode, directionCode); + return productInfoMapper.selectCount(queryWrapper); + } + + @Override + public List<Product2JsonVo> transform2JsonSimple(MultipartFile file, UserInfo userInfo) { + if (file == null || file.getSize() < 1 || file.getOriginalFilename() == null) { + throw new BusinessException("文件上传为空"); + } + + String originalFilename = file.getOriginalFilename(); + try { + byte [] byteArr=file.getBytes(); + InputStream inputStream = new ByteArrayInputStream(byteArr); + boolean isExcel2007 = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).endsWith("xlsx"); + //解析 + List<Product2JsonVo> product2JsonVos = excelExportService.parsingProduct(inputStream, userInfo, isExcel2007); + //再做一遍筛查 + assert product2JsonVos.size() > 0; + List<String> stringList = product2JsonVos.stream().map(Product2JsonVo::getDirectionCode) + .collect(Collectors.toList()); + long count = stringList.stream().distinct().count(); + if (stringList.size() == count) { + return product2JsonVos; + } else { + throw new BusinessException("文件中有重复产品在不同行"); + } + + } catch (FileNotFoundException e) { + e.printStackTrace(); + throw new BusinessException("找不到文件"); + } catch (IOException e) { + e.printStackTrace(); + throw new BusinessException("发生错误,请联系管理员"); + } + } + + @Override + public List<ProductInfo> selectProductInfo(Map<String, Object> condition) { + return productInfoMapper.selectProductInfo(condition); + } + + @Override + public List<String> getAllProductCodes() { + return productInfoMapper.getAllProductCodes(); + } + + @Override + @Transactional + public void importDataByExcel(MultipartFile file, UserInfo user) { + if (file == null || file.getSize() < 1 || file.getOriginalFilename() == null) { + throw new BusinessException("文件上传为空"); + } + + String originalFilename = file.getOriginalFilename(); + + try { + byte [] byteArr=file.getBytes(); + InputStream inputStream = new ByteArrayInputStream(byteArr); + boolean isExcel2007 = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).endsWith("xlsx"); + //解析导入 + List<ProductInfo> dataList= excelExportService.parseProductFromOldSystem(inputStream, user, isExcel2007); + assert dataList.size() > 0; + List<String> directionCodes = dataList.stream().map(ProductInfo::getDirectionCode) + .collect(Collectors.toList()); + long count = directionCodes.stream().distinct().count(); + if (directionCodes.size() != count) + throw new BusinessException("文件中有重复产品流向码"); + + for (ProductInfo productInfo : dataList) { + productInfo.setIsOld((byte)1); + this.save(productInfo); + } + + } catch (FileNotFoundException e) { + e.printStackTrace(); + throw new BusinessException("找不到文件"); + } catch (IOException e) { + e.printStackTrace(); + throw new BusinessException("发生错误,请联系管理员"); + } + } + + @Override + public boolean isProductUsed(Long id) { + ProductInfo productInfo = productInfoMapper.selectById(id); + if (productInfo == null){ + return false; + } + List<StockInfo> stockInfos = stockService.selectStockByProductId(id); + if (stockInfos.size() > 0 ){ + return true; + } + List<ProductCodeInfo> productCodeInfos = productCodeService.selectByItemCode(productInfo.getDirectionCode()); + return productCodeInfos.size() > 0; + } + + @Override + public List<String> selectTypes() { + + return productInfoMapper.selectTypes(); + } + + @Override + public List<ProductDO> selectDoByDirections(List<String> direction10Codes) { + if (direction10Codes == null || direction10Codes.size() == 0) { + throw new BusinessException("系统入参为空"); + } + return productInfoMapper.selectDoByDirections(direction10Codes); + } +} + -- Gitblit v1.9.2