whyclxw
2 天以前 cf9a5039e6db9d1d5963e3fe1a37d00169ec2ef7
src/main/java/com/whyc/service/ECRService.java
@@ -1,8 +1,11 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.FileDirPath;
import com.whyc.dto.Response;
import com.whyc.mapper.ECRMapper;
import com.whyc.pojo.ECR;
@@ -52,7 +55,6 @@
        }
        String excelFilePath = excelDir + File.separator + originalFilename.substring(0,originalFilename.lastIndexOf(".")) + "_" + dateUnion +originalFilename.substring(originalFilename.lastIndexOf("."));
        String excelHttpUrl = excelFilePath.substring(excelDir.lastIndexOf("doc_file"+ File.separator + "ecr"));
        multipartFile.transferTo(new File(excelFilePath));
        Workbook workbook = null;
        workbook = WorkbookFactory.create(inputStream);
@@ -61,12 +63,19 @@
        Sheet sheet = workbook.getSheetAt(0);
        List<ECR> ecrList = new LinkedList<>();
        ECR ecr = new ECR();
        String numberCellValue = sheet.getRow(1).getCell(5).getStringCellValue();
        String number = numberCellValue.substring(numberCellValue.indexOf("BG"));
        Cell numberCell = sheet.getRow(1).getCell(5);
        if(numberCell == null || !numberCell.getStringCellValue().contains("ECR编号")){
            return new Response().set(1,false,"ECR编号不能为空或单元格格式不规范!");
        }
        String numberCellValue = numberCell.getStringCellValue();
        String number = numberCellValue.substring(6).trim();
        if(number.equals("")){
            return new Response().set(1,false,"ECR编号不能为空!");
        }
        Cell codeCell = sheet.getRow(2).getCell(0);
        if(codeCell == null){
            return new Response().set(1,false,"变更料号不能为空!");
        if(codeCell == null || !codeCell.getStringCellValue().contains("变更料号")){
            return new Response().set(1,false,"变更料号不能为空或单元格格式不规范!");
        }
        String codeCellValue = codeCell.getStringCellValue();
        //变更料号:xxx
@@ -79,8 +88,8 @@
        }
        Cell modelCell = sheet.getRow(2).getCell(5);
        if(modelCell == null){
            return new Response().set(1,false,"变更型号不能为空!");
        if(modelCell == null || !modelCell.getStringCellValue().contains("变更名称/型号")){
            return new Response().set(1,false,"变更型号不能为空或单元格格式不规范!");
        }
        String modelCellValue = modelCell.getStringCellValue();
        //变更名称/型号:xxx
@@ -92,18 +101,55 @@
            modelSplit = modelStr.split("/");
        }
        String proposeDateCellValue = sheet.getRow(2).getCell(14).getStringCellValue();
        Cell proposeDateCell = sheet.getRow(2).getCell(14);
        if(proposeDateCell == null || !proposeDateCell.getStringCellValue().contains("申请日期")){
            return new Response().set(1,false,"申请日期不能为空或单元格格式不规范!");
        }
        String proposeDateCellValue = proposeDateCell.getStringCellValue();
        //申请日期:xxx
        String proposeDateStr = proposeDateCellValue.substring(5).trim();
        Date proposeDate = DateUtil.YYYY_MM_DD_UNION.parse(proposeDateStr);
        String proposerCellValue = sheet.getRow(2).getCell(22).getStringCellValue();
        if(proposeDateStr.equals("")){
            return new Response().set(1,false,"申请日期不能为空!");
        }
        Date proposeDate;
        try {
            if(proposeDateStr.contains(".")){
                proposeDate = DateUtil.YYYY_MM_DD_UNION2.parse(proposeDateStr);
            }else if(proposeDateStr.contains("-")){
                proposeDate = DateUtil.YYYY_MM_DD_UNION3.parse(proposeDateStr);
            }else if(proposeDateStr.contains("/")){
                proposeDate = DateUtil.YYYY_MM_DD_UNION4.parse(proposeDateStr);
            }else {
                proposeDate = DateUtil.YYYY_MM_DD_UNION.parse(proposeDateStr);
            }
        }catch (ParseException e){
            return new Response().set(1,false,"申请日期格式错误!");
        }
        Cell proposerCell = sheet.getRow(2).getCell(22);
        if(proposerCell == null || !proposerCell.getStringCellValue().contains("申请人")){
            return new Response().set(1,false,"申请人不能为空或单元格格式不规范!");
        }
        String proposerCellValue = proposerCell.getStringCellValue();
        //申请人:xxx
        String proposer = proposerCellValue.substring(4).trim();
        if(proposer.equals("")){
            return new Response().set(1,false,"申请人不能为空!");
        }
        String parentModel = sheet.getRow(3).getCell(0).getStringCellValue().substring(10).trim();
        Cell parentModelCell = sheet.getRow(3).getCell(0);
        if(parentModelCell == null || !parentModelCell.getStringCellValue().contains("变更所属机型/系列")){
            return new Response().set(1,false,"物料所属型号不能为空或单元格格式不规范!");
        }
        String parentModel = parentModelCell.getStringCellValue().substring(10).trim();
        if(parentModel.equals("")){
            return new Response().set(1,false,"物料所属型号不能为空!");
        }
        String changeDescriptionCellValue = sheet.getRow(4).getCell(0).getStringCellValue();
        Cell changeDescriptionCell = sheet.getRow(4).getCell(0);
        if(changeDescriptionCell == null || changeDescriptionCell.getStringCellValue().trim().equals("")){
            return new Response().set(1,false,"变更描述不能为空!");
        }
        String changeDescriptionCellValue = changeDescriptionCell.getStringCellValue();
        //申请变更归类:index从16-22,被选中的标识为■D.品质改善
        StringBuilder changeTypeBuilder = new StringBuilder();
@@ -175,6 +221,11 @@
        if(solutionCellValue.contains("■")){
            String solutionStr = solutionCellValue.split("■")[1];
            solution = solutionStr.split("\\.")[1];
            if(solution.contains("□")){
                solution = solution.split("□")[0];
            }
        }else{
            return new Response().set(1,false,"处理方式必须选中一项!");
        }
        //先将共同属性赋值给基础对象
@@ -199,6 +250,15 @@
            ecrTemp.setSubModel(modelSplit[i]);
            ecrList.add(ecrTemp);
        }
        //提交之前先校验流水号是否存在
        QueryWrapper<ECR> query = Wrappers.query();
        query.eq("number",ecrList.get(0).getNumber()).last(" limit 1");
        ECR ecrNumberObj = mapper.selectOne(query);
        if(ecrNumberObj!= null) {
            return new Response().set(1,false,"ecr编号已存在");
        }
        //存储操作执行
        multipartFile.transferTo(new File(excelFilePath));
        mapper.insertBatchSomeColumn(ecrList);
        return new Response().set(1,true,"导入完成");
@@ -230,6 +290,13 @@
            ecrTemp.setSubModel(subModelSplit[i]);
            ecrList.add(ecrTemp);
        }
        //提交之前先校验流水号是否存在
        QueryWrapper<ECR> query = Wrappers.query();
        query.eq("number",ecrList.get(0).getNumber()).last(" limit 1");
        ECR ecrNumberObj = mapper.selectOne(query);
        if(ecrNumberObj!= null) {
            return new Response().set(1,false,"ecr编号已存在");
        }
        mapper.insertBatchSomeColumn(ecrList);
        return new Response().set(1,true,"导入完成");
    }
@@ -248,7 +315,7 @@
        }
        wrapper.ge("create_time",createTime);
        wrapper.le("create_time",createTime1);
        wrapper.orderByAsc("number");
        wrapper.orderByDesc("create_time");
        List list=mapper.selectList(wrapper);
        PageInfo pageInfo=new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"查询ECR记录");
@@ -264,9 +331,17 @@
        return list;
    }
    public void exportExcel(HttpServletResponse response) {
        //查询所有
        List<ECR> ecrList = mapper.selectList(null);
    public void exportExcel(HttpServletResponse response, List<Integer> ids) {
        List<ECR> ecrList;
        if(ids == null) {
            //查询所有
            ecrList = mapper.selectList(null);
        }else{
            //查询ids的记录
            QueryWrapper<ECR> query = Wrappers.query();
            query.in("id",ids);
            ecrList = mapper.selectList(query);
        }
        int size = ecrList.size();
        //ECR编号,申请日期,申请人,变更描述,变更料号,变更型号,变更所属型号,处理方式,创建时间
        String[] title = new String[]{"年份","ECR编号","申请日期","申请人","变更描述","变更料号","变更型号","变更所属型号","处理方式","创建时间"};
@@ -288,7 +363,30 @@
            values[i][8] = ecr.getSolution();
            values[i][9] = DateUtil.YYYY_MM_DD_HH_MM_SS.format(ecr.getCreateTime());
        }
        String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS.format(new Date());
        String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS2.format(new Date());
        ExcelUtil.exportExcel("变更记录清单_"+dateFormat,"清单",title,values,null,response);
    }
    //删除ECR记录
    public Response deleteEcr(String number, String filePath) {
        if(!(filePath==null||filePath.isEmpty())){
            String fileDirName = FileDirPath.getFileDirName();
            File file = new File(fileDirName+File.separator+filePath);
            if(!file.isDirectory()){
                file.delete();
            }
        }
        //删除表记录
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("number",number);
        int delFlag=mapper.delete(wrapper);
        return new Response().set(1,delFlag>0,"删除ECR");
    }
    //反馈下拉查询ECR记录
    public Response searchEcrInFeedback() {
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.select("distinct number");
        wrapper.orderByDesc("create_time");
        List list=mapper.selectList(wrapper);
        return new Response().setII(1,list.size()>0,list,"查询ECR记录");
    }
}