From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:22:45 +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