com.gettec.fsnip.fsn.service.sample.impl.ImportExcelServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.gettec.fsnip.fsn.service.sample.impl.ImportExcelServiceImpl.java

Source

package com.gettec.fsnip.fsn.service.sample.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import com.gettec.fsnip.fsn.exception.ServiceException;
import com.gettec.fsnip.fsn.model.business.BusinessUnit;
import com.gettec.fsnip.fsn.model.business.SampleBusinessBrand;
import com.gettec.fsnip.fsn.model.product.Product;
import com.gettec.fsnip.fsn.model.product.ProductInstance;
import com.gettec.fsnip.fsn.model.product.SampleProduct;
import com.gettec.fsnip.fsn.model.product.SampleProductInstance;
import com.gettec.fsnip.fsn.model.test.SampleTestProperty;
import com.gettec.fsnip.fsn.model.test.SampleTestResult;
import com.gettec.fsnip.fsn.model.test.TestProperty;
import com.gettec.fsnip.fsn.model.test.TestResult;
import com.gettec.fsnip.fsn.service.business.BusinessUnitService;
import com.gettec.fsnip.fsn.service.business.SampleBusinessBrandService;
import com.gettec.fsnip.fsn.service.product.ProductInstanceService;
import com.gettec.fsnip.fsn.service.product.ProductService;
import com.gettec.fsnip.fsn.service.product.SampleProductInstanceService;
import com.gettec.fsnip.fsn.service.product.SampleProductService;
import com.gettec.fsnip.fsn.service.sample.ImportExcelService;
import com.gettec.fsnip.fsn.service.test.SampleTestPropertyService;
import com.gettec.fsnip.fsn.service.test.SampleTestResultService;
import com.gettec.fsnip.fsn.service.test.TestPropertyService;
import com.gettec.fsnip.fsn.service.test.TestResultService;
import com.gettec.fsnip.fsn.util.ReadFileTool;
import com.gettec.fsnip.fsn.vo.product.ProductVO;
import com.gettec.fsnip.fsn.vo.sampling.ExcelFileVO;
import com.gettec.fsnip.fsn.vo.sampling.SheetVO;

@Service(value = "importExcelService")
public class ImportExcelServiceImpl implements ImportExcelService {
    private final String XLSX_CONTENTTYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    private final String XLS_CONTENTTYPE = "application/vnd.ms-excel";

    private final String DEFAULT_BUSINESSUNIT = "--"; //???

    @Autowired
    private BusinessUnitService businessUnitService; //??
    @Autowired
    private ProductService productService;//??
    @Autowired
    private ProductInstanceService productInstanceService;
    @Autowired
    private TestResultService testResultService;
    @Autowired
    private TestPropertyService testPropertyService;

    @Autowired
    private SampleProductService sampleProductService;//??

    @Autowired
    private SampleBusinessBrandService sampleBusinessBrandService;//?

    @Autowired
    private SampleProductInstanceService sampleProductInstanceService;

    @Autowired
    private SampleTestPropertyService sampleTestPropertyService;

    @Autowired
    private SampleTestResultService sampleTestResultService;

    @Override
    public List<ExcelFileVO> getWorkbook(MultipartFile[] excelFiles) {
        List<ExcelFileVO> list = new ArrayList<ExcelFileVO>();
        for (MultipartFile file : excelFiles) {
            ExcelFileVO excelFileVO = null;
            if (XLSX_CONTENTTYPE.equals(file.getContentType())) {
                XSSFWorkbook workbook = null;
                try {
                    workbook = new XSSFWorkbook(file.getInputStream());
                    excelFileVO = ReadFileTool.analyticalWorkbook(workbook);
                    excelFileVO.setFileName(file.getOriginalFilename());
                } catch (IOException e) {
                    excelFileVO = new ExcelFileVO();
                    excelFileVO.setFlag(false);
                    excelFileVO.setMessage("????");
                }
            } else if (XLS_CONTENTTYPE.equals(file.getContentType())) {
                HSSFWorkbook workbook = null;
                try {
                    workbook = new HSSFWorkbook(file.getInputStream());
                    excelFileVO = ReadFileTool.analyticalWorkbook(workbook);
                    excelFileVO.setFileName(file.getOriginalFilename());
                } catch (IOException e) {
                    excelFileVO = new ExcelFileVO();
                    excelFileVO.setFlag(false);
                    excelFileVO.setMessage("????");
                }
            } else {
                excelFileVO = new ExcelFileVO();
                excelFileVO.setFlag(false);
                excelFileVO.setMessage("????");
            }
            list.add(excelFileVO);
        }
        return list;
    }

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void saveProduct(SheetVO sheetVO, BusinessUnit defaultBusinessUnit,
            SampleBusinessBrand defaultBusinessBrand) {
        List<ProductVO> list = sheetVO.getList();
        for (ProductVO productVO : list) {
            try {
                /*********************???**************************/
                Map<String, BusinessUnit> map = saveOrGetBusinessUnit(productVO);
                BusinessUnit businessUnit = map.get("businessUnit");
                businessUnit = businessUnit == null ? defaultBusinessUnit : businessUnit; //?
                BusinessUnit sampleBusinessUnit = map.get("sampleBusinessUnit"); //?

                Product product = new Product();
                product.setName(productVO.getProductName());
                product.setFormat(productVO.getFormat());
                product = productService.checkProduct(product);

                if (product != null) {
                    //????
                    saveSample(product, productVO, businessUnit, sampleBusinessUnit, sheetVO);
                } else {
                    //??????
                    saveSample(productVO, businessUnit, sampleBusinessUnit, sheetVO, defaultBusinessBrand);
                }

            } catch (Exception e) {
                e.printStackTrace();
                break;
            }
        }
    }

    //??????
    public void saveSample(ProductVO productVO, BusinessUnit businessUnit, BusinessUnit sampleBusinessUnit,
            SheetVO sheetVO, SampleBusinessBrand defaultBusinessBrand) {
        try {
            /*********************???**************************/
            SampleProduct sampleProduct = saveOrGetSampleProduct(productVO, businessUnit, defaultBusinessBrand);

            /*********************???**************************/
            SampleProductInstance sampleProductInstance = new SampleProductInstance();
            sampleProductInstance.setBatchSerialNo(productVO.getProductionDate());
            sampleProductInstance.setProductionDate(productVO.getProduction_Date());
            sampleProductInstance.setSampleProduct(sampleProduct);
            sampleProductInstance.setProducer(businessUnit);
            sampleProductInstanceService.create(sampleProductInstance);

            /*********************??**************************/
            SampleTestResult testResult = new SampleTestResult();
            if (sampleBusinessUnit != null) {
                testResult.setTestee(sampleBusinessUnit);
            }
            testResult.setCheckOrgName("");
            testResult.setPass(sheetVO.getPass());
            testResult.setSample(sampleProductInstance);
            String uuid = UUID.randomUUID().toString();
            testResult.setServiceOrder(uuid);
            testResult.setCreate_user("");
            testResult.setPublishFlag('1'); //;
            testResult.setTestType("");
            testResult.setEdition(sheetVO.getSource().toString());
            sampleTestResultService.create(testResult);

            /*********************??**************************/
            if (sheetVO.getPass().equals(Boolean.FALSE)) {
                List<TestProperty> testList = productVO.getTestProperty();
                for (TestProperty testProperty : testList) {
                    SampleTestProperty sampleTestProperty = new SampleTestProperty();
                    sampleTestProperty.setName(testProperty.getName());
                    sampleTestProperty.setResult(testProperty.getResult());
                    sampleTestProperty.setTechIndicator(testProperty.getTechIndicator());
                    sampleTestProperty.setTestResultId(testResult.getId());
                    sampleTestPropertyService.create(sampleTestProperty);
                }
            }

        } catch (ServiceException e) {
            e.printStackTrace();
        }

    }

    //????
    public void saveSample(Product product, ProductVO productVO, BusinessUnit businessUnit,
            BusinessUnit sampleBusinessUnit, SheetVO sheetVO) {
        try {
            /*********************???**************************/
            ProductInstance productInstance = new ProductInstance();
            productInstance.setBatchSerialNo(productVO.getProductionDate());
            productInstance.setProductionDate(productVO.getProduction_Date());
            productInstance.setProduct(product);
            productInstance.setProducer(businessUnit);
            productInstanceService.create(productInstance);

            /*********************??**************************/
            TestResult testResult = new TestResult();
            if (sampleBusinessUnit != null) {
                testResult.setTestee(sampleBusinessUnit);
            }
            testResult.setCheckOrgName("");
            testResult.setPass(sheetVO.getPass());
            testResult.setSample(productInstance);
            String uuid = UUID.randomUUID().toString();
            testResult.setServiceOrder(uuid);
            testResult.setCreate_user("");
            testResult.setPublishFlag('1'); //;
            testResult.setTestType("");
            testResult.setEdition(sheetVO.getSource().toString());
            testResultService.create(testResult);

            /*********************??**************************/
            if (sheetVO.getPass().equals(Boolean.FALSE)) {
                List<TestProperty> testList = productVO.getTestProperty();
                for (TestProperty testProperty : testList) {
                    testProperty.setTestResultId(testResult.getId());
                    System.out.println(testProperty.getTechIndicator());
                    testPropertyService.create(testProperty);
                }
            }
        } catch (ServiceException e) {
            e.printStackTrace();
        }
    }

    public SampleProduct saveOrGetSampleProduct(ProductVO product, BusinessUnit businessUnit,
            SampleBusinessBrand defaultBusinessBrand) {
        SampleProduct producEntity = null;
        try {
            SampleProduct productCheck = new SampleProduct();
            productCheck.setName(product.getProductName());
            productCheck.setFormat(product.getFormat());

            producEntity = sampleProductService.checkSampleProduct(productCheck);

            if (producEntity == null) {
                if (null != product.getBusinessName() && !"".equals(product.getBusinessName())
                        && !"/".equals(product.getBusinessName()) && !"".equals(product.getBusinessName())) {
                    SampleBusinessBrand sampleBusinessBrand = saveOrGetSampleBusinessBrand(product, businessUnit);
                    productCheck.setSampleBusinessBrand(sampleBusinessBrand);
                } else {
                    productCheck.setSampleBusinessBrand(defaultBusinessBrand);
                }

                productCheck.setProducer(businessUnit);
                producEntity = sampleProductService.create(productCheck);
            }

        } catch (ServiceException e) {
            e.printStackTrace();
        }
        return producEntity;
    }

    @Override
    public Map<String, BusinessUnit> saveOrGetBusinessUnit(ProductVO product) {
        BusinessUnit businessUnit = null;
        BusinessUnit sampleBusinessUnit = null;
        Map<String, BusinessUnit> map = new HashMap<String, BusinessUnit>();
        try {
            if (!"/".equals(product.getCompanyName()) && !"".equals(product.getCompanyName())) {
                BusinessUnit businessUnitCheck = new BusinessUnit();
                businessUnitCheck.setName(product.getCompanyName());
                businessUnit = businessUnitService.findByName(product.getCompanyName());
                //businessUnit = businessUnitService.checkUniqueEntity(businessUnitCheck);
                if (businessUnit == null) {
                    if (!"/".equals(product.getCompanyAddress()) && !"".equals(product.getCompanyAddress())) {
                        businessUnitCheck.setAddress(product.getCompanyAddress());
                    }
                    businessUnitCheck.setLicense(null);
                    businessUnit = businessUnitService.create(businessUnitCheck);
                }
            }

            if (!"/".equals(product.getSampleCompanyName()) && !"".equals(product.getSampleCompanyName())) {
                BusinessUnit sampleBusinessUnitCheck = new BusinessUnit();
                sampleBusinessUnitCheck.setName(product.getSampleCompanyName());
                sampleBusinessUnit = businessUnitService.findByName(product.getSampleCompanyName());
                //sampleBusinessUnit =  businessUnitService.checkUniqueEntity(sampleBusinessUnitCheck);
                if (sampleBusinessUnit == null) {
                    if (!"/".equals(product.getSampleCompanyName()) && !"".equals(product.getSampleCompanyName())
                            && product.getSampleCompanyAddress().length() > 7) {
                        sampleBusinessUnitCheck.setAddress(product.getSampleCompanyAddress());
                    }
                    sampleBusinessUnitCheck.setLicense(null);
                    sampleBusinessUnit = businessUnitService.create(sampleBusinessUnitCheck);
                }
            }
        } catch (ServiceException e) {
            e.printStackTrace();
        }
        map.put("businessUnit", businessUnit);
        map.put("sampleBusinessUnit", sampleBusinessUnit);
        return map;
    }

    public SampleBusinessBrand saveOrGetSampleBusinessBrand(ProductVO product, BusinessUnit businessUnit) {
        SampleBusinessBrand sampleBusinessBrand = null;
        try {
            SampleBusinessBrand businessBrandCheck = new SampleBusinessBrand();
            businessBrandCheck.setName(product.getBusinessName());
            businessBrandCheck.setBusinessUnit(businessUnit);
            sampleBusinessBrand = sampleBusinessBrandService.checkBusinessBrand(businessBrandCheck);
            if (null == sampleBusinessBrand) {
                sampleBusinessBrand = sampleBusinessBrandService.create(businessBrandCheck);
            }
        } catch (ServiceException e) {
            e.printStackTrace();
        }
        return sampleBusinessBrand;
    }

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public BusinessUnit getDefaultBusinessUnit() {
        BusinessUnit businessUnit = new BusinessUnit();
        businessUnit.setName(DEFAULT_BUSINESSUNIT);
        BusinessUnit defaultBusinessUnit = null;
        try {
            defaultBusinessUnit = businessUnitService.findByName(DEFAULT_BUSINESSUNIT);
            if (null == defaultBusinessUnit) {
                defaultBusinessUnit = businessUnitService.create(businessUnit);
            }
        } catch (ServiceException e) {
            e.printStackTrace();
        }
        return defaultBusinessUnit;
    }

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public SampleBusinessBrand getDefaultSampleBusinessBrand(BusinessUnit defaultBusinessUnit) {
        SampleBusinessBrand sampleBusinessBrand = new SampleBusinessBrand();
        sampleBusinessBrand.setName(DEFAULT_BUSINESSUNIT);
        SampleBusinessBrand defaultSampleBusinessBrand = null;
        try {
            sampleBusinessBrand.setBusinessUnit(defaultBusinessUnit);
            defaultSampleBusinessBrand = sampleBusinessBrandService.checkBusinessBrand(sampleBusinessBrand);
            if (null == defaultSampleBusinessBrand) {
                defaultSampleBusinessBrand = sampleBusinessBrandService.create(sampleBusinessBrand);

            }
        } catch (ServiceException e) {
            e.printStackTrace();
        }
        return defaultSampleBusinessBrand;
    }

}