whyclxw
4 天以前 10c3d3300cce0ccef45b9db8865b61999385158b
src/main/java/com/whyc/service/WorksheetLinkService.java
@@ -3,11 +3,13 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.config.EnumWorksheetType;
import com.whyc.dto.Response;
import com.whyc.mapper.ProductBomApprovingMapper;
import com.whyc.mapper.WorksheetLinkMapper;
import com.whyc.pojo.*;
import com.whyc.util.CommonUtil;
import com.whyc.util.FileUtil;
import com.whyc.util.WordUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -15,6 +17,7 @@
import javax.annotation.Resource;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@@ -47,7 +50,7 @@
    private ProductBomApprovingService pbaService;
    @Autowired
    private MaterialProductHistoryService cphService;
    private MaterialProductHistoryService mphService;
    @Autowired
    private MaterialProductApprovingService cpAService;
@@ -66,6 +69,12 @@
    @Autowired
    private ProductHistoryService phService;
    @Autowired
    private ProcedureDocApprovingService procedureDocApprovingService;
    @Autowired
    private ProcedureDocService procedureDocService;
    @Transactional
    public void audit(WorksheetLink link) {
@@ -144,12 +153,30 @@
                String parentModel = productApproving.getParentModel();
                String parentCode = productApproving.getParentCode();
                String customCode = productApproving.getCustomCode();
                Product product = productService.getVersion(parentCode, customCode);
                ProductHistory latestProduct = phService.getLatestVersion(parentCode, customCode);
                ProductHistory enabledProduct = phService.getEnabledByParentCodeAndCustomCode(parentCode, customCode);
                int currentVersion = 0;
                if (product != null) {
                    currentVersion = product.getVersion();
                if (latestProduct != null) {
                    currentVersion = latestProduct.getVersion();
                }
                Integer nextVersion = currentVersion + 1;
                //产品物料关系迁移
                //查询生效版本的关联关系
                if(latestProduct!=null &&enabledProduct!=null) {
                    List<MaterialProductHistory> mpList = mphService.getListByParentCodeAndCustomCodeAndVersion(parentCode, customCode, enabledProduct.getVersion());
                    if (latestProduct.getVersion().intValue() == enabledProduct.getVersion()) {
                        //最新版本生效,关联关系版本连着的
                        mphService.updateVersionBatch(mpList);
                    } else {
                        //旧版本生效,关联关系版本不连着
                        mpList.forEach(mp -> {
                            mp.setSVersion(nextVersion);
                            mp.setEVersion(nextVersion);
                        });
                        mphService.insertBatch(mpList);
                    }
                }
                //将产品文件复制至正式路径
                //文件转移,未跟子件挂钩的所有图纸图片转移到产品版本下:doc_file/product/{产品型号}/standard或者{customCode}}/{version}/
                //跟子件挂钩的转移到子件图纸下:doc_file/material/
@@ -164,9 +191,7 @@
                //存于产品下,bom内没对应
                List<String> productUrlList = new LinkedList<>();
                List<String> productUrlNameList = new LinkedList<>();
                List<String> materialUrlNameList = new LinkedList<>();
                List<String> picUrlNameList = new LinkedList<>();
                List<Material> materialDwgUrlNameList = new LinkedList<>();
                fileUrlList = FileUtil.getStaticFilePath(file,fileUrlList);
                //图纸dwg 子件/产品
@@ -177,9 +202,16 @@
                    boolean existFlag = false;
                    for (ProductBomApproving approving :approvingList){
                        String filename = dwgUrl.substring(dwgUrl.lastIndexOf(File.separator) + 1, dwgUrl.length() - 4);
                        String fileFullName = dwgUrl.substring(dwgUrl.lastIndexOf(File.separator) + 1);
                        if(approving.getSubModel().toUpperCase().equals(filename.toUpperCase())){
                            materialUrlList.add(dwgUrl);
                            existFlag = true;
                            Material temp = new Material();
                            temp.setSubModel(approving.getSubModel());
                            temp.setNotes("doc_file" + File.separator + "material"
                                    + File.separator + fileFullName);
                            materialDwgUrlNameList.add(temp);
                            break;
                        }
                    }
@@ -192,8 +224,10 @@
                picUrlList.forEach(picUrl->{
                    for (ProductBomApproving approving :approvingList){
                        String filename = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1, picUrl.length() - 4);
                        String fileFullName = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1);
                        if(approving.getSubModel().toUpperCase().equals(filename.toUpperCase())){
                            picUrlNameList.add(picUrl);
                            approving.setPictureUrl("doc_file" + File.separator + "material"
                            + File.separator + fileFullName);
                            break;
                        }
                    }
@@ -204,10 +238,10 @@
                //doc_file/product/{产品型号}/standard或者{customCode}}/{version}/
                //跟子件挂钩的转移到子件图纸下:doc_file/material/
                String customCodeString = null;
                if(customCode==null) {
                    customCodeString = "standard";
                }else{
                if(customCode!=null && !customCode.equals("")) {
                    customCodeString = customCode;
                }else{
                    customCodeString = "standard";
                }
                String productDir = projectDir + File.separator + "doc_file" + File.separator + "product" + File.separator + parentModel
                        + File.separator + customCodeString + File.separator +nextVersion;
@@ -222,7 +256,7 @@
                }
                productUrlList.forEach(productUrl->{
                    String dwgName = productUrl.substring(productUrl.lastIndexOf(File.separator) + 1, productUrl.length() - 4);
                    productUrlNameList.add(dwgName);
                    try {
                        FileCopyUtils.copy(new File(productUrl),new File(productDir+File.separator+dwgName+".dwg"));
                    } catch (IOException e) {
@@ -232,9 +266,17 @@
                materialUrlList.forEach(materialUrl->{
                    String dwgName = materialUrl.substring(materialUrl.lastIndexOf(File.separator) + 1, materialUrl.length() - 4);
                    materialUrlNameList.add(dwgName);
                    try {
                        FileCopyUtils.copy(new File(materialUrl),new File(materialDir+File.separator+dwgName+".dwg"));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                });
                picUrlList.forEach(picUrl->{
                    String picFullName = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1);
                    try {
                        FileCopyUtils.copy(new File(picUrl),new File(materialDir+File.separator+picFullName));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
@@ -245,15 +287,26 @@
                ProductHistory productHistory = new ProductHistory();
                productHistory.setParentCode(parentCode);
                productHistory.setParentName(productApproving.getParentName());
                productApproving.setParentModel(parentModel);
                productHistory.setParentModel(parentModel);
                productHistory.setNotes(productApproving.getNotes());
                productHistory.setCustomCode(customCode);
                productHistory.setCreateTime(new Date());
                productHistory.setVersion(nextVersion);
                productHistory.setEnabled(1);
                Product productNew = new Product();
                productNew.setParentCode(parentCode);
                productNew.setParentName(productApproving.getParentName());
                productNew.setParentModel(parentModel);
                productNew.setNotes(productApproving.getNotes());
                productNew.setCustomCode(customCode);
                productNew.setCreateTime(new Date());
                productNew.setVersion(nextVersion);
                //实际生效的只有insert,因为状态设置为未启用已经在提交审批时变更了
                phService.insertAndUpdateEnabled(productHistory);
                int productId = productService.updateVersion(parentCode,customCode,nextVersion);
                productService.insert(productNew);
                List<ProductBomHistory> productBomHistoryList = new LinkedList<>();
                List<ProductBom> productBomList = new LinkedList<>();
@@ -261,7 +314,7 @@
                    ProductBomHistory bomHistory = new ProductBomHistory();
                    ProductBom bom = new ProductBom();
                    bom.setProductId(productId);
                    bom.setProductId(productNew.getId());
                    bom.setCategory(approving.getCategory());
                    bom.setCreateDate(new Date());
                    bom.setDwgUrl(approving.getDwgUrl());
@@ -278,7 +331,7 @@
                    bom.setThickness(approving.getThickness());
                    bom.setType(approving.getType());
                    bom.setUnit(approving.getUnit());
                    bom.setUpUserId(approving.getUpUserId());
                    //bom.setUpUserId(approving.getUpUserId());
                    bom.setVersion(nextVersion);
                    bomHistory.setProductId(productHistory.getId());
@@ -298,7 +351,7 @@
                    bomHistory.setThickness(approving.getThickness());
                    bomHistory.setType(approving.getType());
                    bomHistory.setUnit(approving.getUnit());
                    bomHistory.setUpUserId(approving.getUpUserId());
                    //bomHistory.setUpUserId(approving.getUpUserId());
                    bomHistory.setVersion(nextVersion);
                    productBomHistoryList.add(bomHistory);
@@ -314,30 +367,34 @@
                approvingList.forEach(approving->{
                    if(!existCodeList.contains(approving.getSubCode())){ //这个审批bom中的物料不在物料管理内
                        Material temp = new Material();
                        temp.setCategory(approving.getCategory());
                        //temp.setCategory(approving.getCategory());
                        temp.setCreateDate(new Date());
                        temp.setDwgUrl(approving.getDwgUrl());
                        temp.setFileUrl(approving.getFileUrl());
                        temp.setMaterial(approving.getMaterial());
                        //temp.setMaterial(approving.getMaterial());
                        temp.setNotes(approving.getNotes());
                        temp.setPictureUrl(approving.getPictureUrl());
                        temp.setProducer(approving.getProducer());
                        temp.setQuantity(approving.getQuantity());
                        //temp.setProducer(approving.getProducer());
                        //TODO quantity
                        //temp.setQuantity(approving.getQuantity());
                        temp.setStatus(1);
                        temp.setSubCode(approving.getSubCode());
                        temp.setSubModel(approving.getSubModel());
                        temp.setSubName(approving.getSubName());
                        temp.setSurfaceDetail(approving.getSurfaceDetail());
                        temp.setThickness(approving.getThickness());
                        //temp.setSurfaceDetail(approving.getSurfaceDetail());
                        //temp.setThickness(approving.getThickness());
                        temp.setType(approving.getType());
                        temp.setUnit(approving.getUnit());
                        materialList.add(temp);
                    }
                });
                mService.insertBatch(materialList);
                //将dwg图纸和pic图片,全部更新到对应的记录url中 TODO
                if(materialList.size()!=0) {
                    mService.insertBatch(materialList);
                }
                //将dwg图纸,全部更新到对应的记录url中
                if(materialDwgUrlNameList.size()!=0) {
                    mService.updateDwgUrl(materialDwgUrlNameList);
                }
                /*List<ProductBomApproving> fileBomApprovingList = approvingList.stream()
                        .filter(productBomApproving ->
                                productBomApproving.getPictureUrl() != null || productBomApproving.getDwgUrl() != null
@@ -376,29 +433,77 @@
            }
            else if(type.intValue() == EnumWorksheetType.Material.getType()){ //物料
                List<MaterialApproving> approvingList = mAService.getListByMainId(link.getMainId());
                List<Material> MaterialList = new LinkedList<>();
                List<Material> materialList = new LinkedList<>();
                //区分是新增还是删除
                Integer MaterialId = approvingList.get(0).getMaterialId();
                if(MaterialId==null) { //新增
                Integer materialId = approvingList.get(0).getMaterialId();
                if(materialId==null) { //新增
                    String fileUrl = approvingList.get(0).getFileUrl();
                    File file = new File(fileUrl);
                    List<String> fileUrlList = new LinkedList<>();
                    List<String> dwgUrlList = null;
                    List<String> materialUrlList = new LinkedList<>();
                    List<Material> materialDwgUrlNameList = new LinkedList<>();
                    fileUrlList = FileUtil.getStaticFilePath(file,fileUrlList);
                    dwgUrlList = fileUrlList.stream().filter(url->url.contains(".dwg")).collect(Collectors.toList());
                    //图纸与物料model对应,则图纸需要保留并转移到正式文件夹
                    //同时,保留图纸对应的物料model和正式文件夹中的http url
                    dwgUrlList.forEach(dwgUrl-> {
                        approvingList.forEach(approving -> {
                            String filename = dwgUrl.substring(dwgUrl.lastIndexOf(File.separator) + 1, dwgUrl.length() - 4);
                            String fileFullName = dwgUrl.substring(dwgUrl.lastIndexOf(File.separator) + 1);
                            if (approving.getSubModel().toUpperCase().equals(filename.toUpperCase())) {
                                materialUrlList.add(dwgUrl);
                                Material temp = new Material();
                                temp.setSubModel(approving.getSubModel());
                                temp.setNotes("doc_file" + File.separator + "material"
                                        + File.separator + fileFullName);
                                materialDwgUrlNameList.add(temp);
                            }
                        });
                    });
                    String projectDir = CommonUtil.getProjectDir();
                    String materialDir = projectDir + File.separator + "doc_file" + File.separator + "material";
                    File materialFile = new File(materialDir);
                    if(!materialFile.exists()){
                        materialFile.mkdirs();
                    }
                    materialUrlList.forEach(materialUrl->{
                        String dwgName = materialUrl.substring(materialUrl.lastIndexOf(File.separator) + 1, materialUrl.length() - 4);
                        try {
                            FileCopyUtils.copy(new File(materialUrl),new File(materialDir+File.separator+dwgName+".dwg"));
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    });
                    //将物料从审批表中转移到正式表
                    approvingList.forEach(approve -> {
                        Material material = new Material();
                        material.setCategory(approve.getCategory());
                        //material.setCategory(approve.getCategory());
                        material.setSubCode(approve.getSubCode());
                        material.setSubName(approve.getSubName());
                        material.setSubModel(approve.getSubModel());
                        material.setUnit(approve.getUnit());
                        material.setQuantity(approve.getQuantity());
                        material.setProducer(approve.getProducer());
                        //TODO quantity
                        //material.setQuantity(approve.getQuantity());
                        //material.setProducer(approve.getProducer());
                        material.setNotes(approve.getNotes());
                        material.setCreateDate(new Date());
                        material.setStatus(1);
                        MaterialList.add(material);
                        materialDwgUrlNameList.forEach(materialDwgUrlName->{
                            if(materialDwgUrlName.getSubModel().equals(approve.getSubModel())){
                                material.setDwgUrl(materialDwgUrlName.getDwgUrl());
                            }
                        });
                        materialList.add(material);
                    });
                    mService.insertBatch(MaterialList);
                    mService.insertBatch(materialList);
                }else{ //删除
                    List<Integer> MaterialIdList = approvingList.stream().map(MaterialApproving::getMaterialId).collect(Collectors.toList());
                    mService.deleteBatch(MaterialIdList);
                    List<Integer> materialIdList = approvingList.stream().map(MaterialApproving::getMaterialId).collect(Collectors.toList());
                    mService.deleteBatch(materialIdList);
                }
                //更新物料审批子表中type为完结
                mAService.endStatus(link.getMainId());
@@ -406,170 +511,39 @@
            else if(type.intValue() == EnumWorksheetType.MaterialProduct.getType()){ //更新物料-产品关系
                //查找到对应的物料-产品关系数据
                List<MaterialProductApproving> cpAList = cpAService.getListByMainId(link.getMainId());
                //查询部件最新的版本号
                //lxw修改
                //ProductBom product = bomService.getProduct(cpAList.get(0).getParentModel());
                ProductBom product=new ProductBom();
                int currentVersion = -1;
                if (product != null) {
                    currentVersion = product.getVersion();
                }
                Integer nextVersion = currentVersion + 1;
                //关联/接触关联,更新版本
                //替换,更新版本,同时bom表历史中对应的subName 版本号不变(排除更新)
                //当前版本
                int version = cpAList.get(0).getVersion();
                //新增关联/移除关联
                Map<Integer, List<MaterialProductApproving>> linkTypeMap = cpAList.stream().collect(Collectors.groupingBy(MaterialProductApproving::getLinkType));
                List<MaterialProductApproving> addedList = new LinkedList<>();
                List<MaterialProductApproving> replacedList = new LinkedList<>();
                List<MaterialProductHistory> addedList = new LinkedList<>();
                List<MaterialProductApproving> removedList = new LinkedList<>();
                linkTypeMap.forEach((linkType,list)->{
                    if(linkType == 1){
                        addedList.addAll(list);
                    }else if(linkType == 2){
                        replacedList.addAll(list);
                        list.forEach(approving->{
                            MaterialProductHistory his = new MaterialProductHistory();
                            his.setParentCode(approving.getParentCode());
                            his.setCustomCode(approving.getCustomCode());
                            his.setSVersion(approving.getVersion());
                            his.setEVersion(approving.getVersion());
                            his.setSubMaterialId(approving.getSubMaterialId());
                            his.setQuantity(approving.getQuantity());
                            his.setMaterialId(approving.getMaterialId());
                            his.setCreateTime(new Date());
                            addedList.add(his);
                        });
                    }else{
                        removedList.addAll(list);
                    }
                });
                List<MaterialProductHistory> newHistoryList = new LinkedList<>();
                //查询最新版本生效的相关物料
                //lxw注释
                //List<MaterialProductHistory> nowHistoryList = cphService.getListByParentModel(cpAList.get(0).getParentModel(), currentVersion);
                List<MaterialProductHistory> nowHistoryList =new ArrayList<>();
                //查询历史中最新版本生效的bom
                //List<ProductBomHistory> nowBomHistoryList = historyService.getListByParentModel(cpAList.get(0).getParentModel(), currentVersion);
                List<ProductBomHistory> nowBomHistoryList = new ArrayList<>();
                /*
                对于关联的,判断当前版本中是否存在替换关系,存在,则直接下个版本插入关联;
                同时,其他当前版本的相关物料-产品记录更新版本,排除存在的替换关系
                */
                /*
                对于替换的,判断当前版本中是否存在关联关系,存在,直接下个版本替换,记录插入;
                同时,当前版本的相关物料-产品记录更新版本,排除存在的关联关系;
                同时,bom表更新到下个版本时,排除被替换件
                */
                //对于解除关联的,当前版本的相关物料-产品记录更新版本,排除解除关联的记录
                //处理思路:先解除关联,再替换,再关联
                if(removedList.size()!=0){
                    removedList.forEach(remove -> {
                        /*nowHistoryList.forEach(nowHistory -> {
                            if (remove.getMaterialId().intValue() == nowHistory.getMaterialId()) {
                                nowHistoryList.remove(nowHistory);
                            }
                        });*/
                        Iterator<MaterialProductHistory> iterator = nowHistoryList.iterator();
                        while (iterator.hasNext()){
                            MaterialProductHistory next = iterator.next();
                            //lxw注释
                            /*if(remove.getMaterialId().intValue() == next.getMaterialId()
                                &&remove.getSubName().equals(next.getSubName())
                            ){
                                iterator.remove();
                                break;
                            }*/
                        }
                    });
                //新增关联
                if(addedList.size()!=0) {
                    mphService.insertBatch(addedList);
                }
                //处理替换
                if(replacedList.size()!=0){
                    replacedList.forEach(replace -> {
                        //当前生效的物料-产品列表
                        /*nowHistoryList.forEach(nowHistory -> {
                            if (replace.getMaterialId().intValue() == nowHistory.getMaterialId()) {
                                nowHistoryList.remove(nowHistory);
                            }
                        });*/
                        if(nowHistoryList.size()!=0) {
                            Iterator<MaterialProductHistory> iterator = nowHistoryList.iterator();
                            while (iterator.hasNext()) {
                                MaterialProductHistory next = iterator.next();
                                //lxw注释
                                /*if (replace.getMaterialId().intValue() == next.getMaterialId()
                                        && replace.getSubName().equals(next.getSubName())
                                ) {
                                    iterator.remove();
                                    break;
                                }*/
                            }
                        }
                        //下个版本新增替换的物料-产品列表
                        MaterialProductHistory newHistory = new MaterialProductHistory();
                        newHistory.setMaterialId(replace.getMaterialId());
                        //lxw注释
                        //newHistory.setParentModel(replace.getParentModel());
                        //newHistory.setSubName(replace.getSubName());
                        newHistory.setQuantity(replace.getQuantity());
                        newHistory.setCreateTime(new Date());
                        newHistory.setLinkType(2);
                        //newHistory.setSVersion(nextVersion);
                        //newHistory.setEVersion(nextVersion);
                        newHistoryList.add(newHistory);
                        //当前生效的bom列表
                        /*nowBomHistoryList.forEach(nowBomHistory->{
                            if(replace.getSubName().equals(nowBomHistory.getSubName())){
                                nowBomHistoryList.remove(nowBomHistory);
                            }
                        });*/
                        Iterator<ProductBomHistory> iterator1 = nowBomHistoryList.iterator();
                        while (iterator1.hasNext()){
                            //lxw注释
                            /*if(replace.getSubName().equals(iterator1.next().getSubName())){
                                iterator1.remove();
                                break;
                            }*/
                        }
                    });
                //移除关联
                if(removedList.size()!=0) {
                    mphService.updateVersionSubtractBatch(removedList);
                }
                //处理关联
                addedList.forEach(add -> {
                    /*nowHistoryList.forEach(nowHistory -> {
                        if (add.getMaterialId().intValue() == nowHistory.getMaterialId()) {
                            nowHistoryList.remove(nowHistory);
                        }
                    });*/
                    if(nowHistoryList.size()!=0) {
                        Iterator<MaterialProductHistory> iterator = nowHistoryList.iterator();
                        while (iterator.hasNext()) {
                            MaterialProductHistory next = iterator.next();
                            //lxw注释
                            /*if (add.getMaterialId().intValue() == next.getMaterialId()
                                    && add.getSubName().equals(next.getSubName())
                            ) {
                                iterator.remove();
                                break;
                            }*/
                        }
                    }
                    MaterialProductHistory newHistory = new MaterialProductHistory();
                    newHistory.setMaterialId(add.getMaterialId());
                    //newHistory.setParentModel(add.getParentModel());
                    //newHistory.setSubName(add.getSubName());
                    newHistory.setQuantity(add.getQuantity());
                    newHistory.setCreateTime(new Date());
                    newHistory.setLinkType(1);
                    //newHistory.setSVersion(nextVersion);
                    //newHistory.setEVersion(nextVersion);
                    newHistoryList.add(newHistory);
                });
                //处理完成,进行表单数据更新,分为nowHistoryList,newHistoryList,nowBomHistoryList
                //nowHistoryList.forEach(nowHis->nowHis.setEVersion(nextVersion));
                //lxw注释
                //if(newHistoryList.size()!=0){newHistoryList.forEach(newHis->{newHis.setEVersion(nextVersion);newHis.setSVersion(nextVersion);});}
                //if(nowBomHistoryList.size()!=0){nowBomHistoryList.forEach(nowBomHis->nowBomHis.setEVersion(nextVersion));}
                if(nowHistoryList.size()!=0){cphService.updateVersionBatch(nowHistoryList);}
                if(newHistoryList.size()!=0){cphService.insertBatch(newHistoryList);}
                if(nowBomHistoryList.size()!=0){historyService.updateVersionBatch(nowBomHistoryList);}
                //更新ProductBom
                //lxw注释
                //List<ProductBomHistory> newBomList = historyService.getListByParentModel(cpAList.get(0).getParentModel(), nextVersion);
                //bomService.updateNewBom(newBomList);
            }
            else if(type.intValue() == EnumWorksheetType.ProductSoftware.getType()){ //软件下载
                //转移记录到正式表
@@ -618,4 +592,61 @@
    public DocUser getApprovingUser(Integer mainId) {
        return linkMapper.getApprovingUser(mainId);
    }
    @Transactional
    public Response confirmProductProcedureAndSOP(WorksheetLink link) throws IOException {
        Integer mainId = linkMapper.selectById(link.getId()).getMainId();
        //更新子表
        linkMapper.updateById(link);
        if(link.getLinkStatus() ==1){
            //查询当前单据子表是否已经全部同意
            QueryWrapper<WorksheetLink> query = Wrappers.query();
            query.eq("main_id",mainId);
            List<WorksheetLink> linkList = linkMapper.selectList(query);
            List<WorksheetLink> rejectList = linkList.stream().filter(linkFilter -> linkFilter.getLinkStatus() != 1).collect(Collectors.toList());
            if(rejectList == null){
                //都为1,已确认
                mainService.updateEndStatusById(mainId,"已确认",5);
                //文件转移到审批完成后的正式路径 文件保存在/doc_file/procedure/xxx.doc
                ProcedureDocApproving approving = procedureDocApprovingService.getByMainId(mainId);
                String fileRelativePath = approving.getFile();
                String projectDir = CommonUtil.getProjectDir();
                String inFilePath = projectDir + File.separator + fileRelativePath;
                String outFilePath = (projectDir + File.separator + fileRelativePath).replace("_approving","");
                WordUtil.fillValue(inFilePath,outFilePath,Arrays.asList(approving.getFzr(),approving.getBz(),approving.getZz(),approving.getPb()));
                //删除之前预览产生的中间文件
                String filename = fileRelativePath.substring(fileRelativePath.lastIndexOf(File.separator)+1,fileRelativePath.lastIndexOf("."));
                File approvingDir = new File(projectDir + File.separator + "procedure_approving");
                FilenameFilter filenameFilter = new FilenameFilter() {
                    @Override
                    public boolean accept(File dir, String name) {
                        name = name.substring(0,name.lastIndexOf("."));
                        if(name.contains(filename) && !name.equals(filename)){
                            return true;
                        }
                        return false;
                    }
                };
                File[] files = approvingDir.listFiles(filenameFilter);
                for (File file : files) {
                    file.delete();
                }
                //流程文件数据转移
                ProcedureDoc procedureDoc = new ProcedureDoc();
                procedureDoc.setName(approving.getName());
                procedureDoc.setDescription(approving.getDescription());
                procedureDoc.setVersion(approving.getVersion());
                procedureDoc.setFzr(approving.getFzr());
                procedureDoc.setBz(approving.getBz());
                procedureDoc.setType(approving.getType());
                procedureDoc.setCreateTime(new Date());
                procedureDoc.setFile(fileRelativePath.replace("_approving",""));
                procedureDocService.insert(procedureDoc);
            }
        }else{
            mainService.updateEndStatusById(mainId,"已驳回",0);
        }
        return new Response().set(1);
    }
}