对比新文件 |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |