lxw
2022-08-19 8ed411856bd6341d927cd8fa7eda44e7ddad4b7d
src/main/java/com/whyc/service/WorksheetMainService.java
@@ -7,16 +7,23 @@
import com.whyc.config.EnumWorksheetType;
import com.whyc.dto.Response;
import com.whyc.dto.WorksheetMainDTO;
import com.whyc.dto.WorksheetMainDTO2;
import com.whyc.mapper.DocUserMapper;
import com.whyc.mapper.WorksheetLinkMapper;
import com.whyc.mapper.WorksheetMainMapper;
import com.whyc.pojo.*;
import com.whyc.util.CommonUtil;
import com.whyc.util.Zip4jUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -41,7 +48,22 @@
    private ProductBomApprovingService approvingService;
    @Autowired
    private ComponentProductApprovingService cpApprovingService;
    private MaterialProductApprovingService cpApprovingService;
    @Autowired
    private MaterialApprovingService cApprovingService;
    @Autowired
    private MaterialService cService;
    @Autowired
    private ProductBomService pbService;
    @Autowired
    private MaterialProductHistoryService cphService;
    @Autowired
    private ProductSoftwareApprovingService psaService;
    @Transactional
    public boolean submit(WorksheetMain main, DocUser user) {
@@ -104,7 +126,8 @@
        bomList.forEach(bom->{
            bom.setMainId(main.getId());
            bom.setUpUserId(user.getId());
            bom.setRejectVersion(nextRejectVersion);
            //lxw注释
            //bom.setRejectVersion(nextRejectVersion);
            bom.setCreateDate(new Date());
            if(bom.getDwgUrl()==null){
                bom.setDwgUrl("");
@@ -126,14 +149,14 @@
        return true;
    }
    public boolean componentProductSubmit(WorksheetMainDTO mainDTO, DocUser user) {
        List<ComponentProductApproving> approvingList = new LinkedList<>();
    public boolean MaterialProductSubmit(WorksheetMainDTO mainDTO, DocUser user) {
        List<MaterialProductApproving> approvingList = new LinkedList<>();
        WorksheetMain main = mainDTO.getMain();
        List<ComponentProductApproving> addedList = mainDTO.getAddedList();
        List<ComponentProductApproving> replacedList = mainDTO.getReplacedList();
        List<ComponentProductApproving> removedList = mainDTO.getRemovedList();
        List<MaterialProductApproving> addedList = mainDTO.getAddedList();
        List<MaterialProductApproving> replacedList = mainDTO.getReplacedList();
        List<MaterialProductApproving> removedList = mainDTO.getRemovedList();
        main.setType(EnumWorksheetType.ComponentProduct.getType());
        main.setType(EnumWorksheetType.MaterialProduct.getType());
        //提交主表
        main.setCreateUserId(user.getId());
        //提交人角色来判断工作流层级
@@ -202,6 +225,215 @@
        }
        cpApprovingService.insert(approvingList);
        return true;
    }
    public Response MaterialSubmit(WorksheetMain main, DocUser user) {
        Response<Object> response = new Response<>();
        List<MaterialApproving> cApprovingList = main.getCApprovingList();
        //判断是新增还是删除
        boolean isAdded = cApprovingList.get(0).getSubName()!=null;
        if(isAdded) { //新增
            //查询是否有 已生效或者已提交审批的 相同的散装件
            List<Material> existMaterialList = new LinkedList<>();
            List<MaterialApproving> existCAList = new LinkedList<>();
            List<Material> MaterialList = cService.getList();
            List<MaterialApproving> cAList = cApprovingService.getListByStatus(1);
            for (int i = 0; i < cApprovingList.size(); i++) {
                MaterialApproving MaterialApproving = cApprovingList.get(i);
                for (int j = 0; j < MaterialList.size(); j++) {
                    if (MaterialApproving.getSubCode().equals(MaterialList.get(j).getSubCode())
                            && MaterialApproving.getSubName().equals(MaterialList.get(j).getSubName())
                            && MaterialApproving.getSubModel().equals(MaterialList.get(j).getSubModel())
                    ) {
                        existMaterialList.add(MaterialList.get(j));
                    }
                }
                for (int j = 0; j < cAList.size(); j++) {
                    if (MaterialApproving.getSubCode().equals(cAList.get(j).getSubCode())
                            && MaterialApproving.getSubName().equals(cAList.get(j).getSubName())
                            && MaterialApproving.getSubModel().equals(cAList.get(j).getSubModel())
                    ) {
                        existCAList.add(cAList.get(j));
                    }
                }
            }
            int existCASize = existCAList.size();
            int existMaterialSize = existMaterialList.size();
            if (existCASize != 0) {
                if (existMaterialSize != 0) {
                    response.setII(21, existCAList, existMaterialList, "重复提交:现有散装件及正在进行审批的散装件中,存在当前提交上传的散装件");
                } else {
                    response.set(22, existCAList, "重复提交:正在进行审批的散装件中,存在当前提交上传的散装件");
                }
                return response;
            } else {
                if (existMaterialSize != 0) {
                    return response.setII(23, null, existMaterialList, "重复提交:现有散装件中,存在当前提交上传的散装件");
                }
            }
        }else{ //删除
            //判断是否在散装件审批删除中,是否存在产品关联及关联审批
            MaterialApproving deleteApproving = new MaterialApproving();
            List<MaterialProductHistory> existMaterialProducts = new LinkedList<>();
            List<MaterialProductApproving> existMaterialProductApprovingList = new LinkedList<>();
            deleteApproving = cApprovingService.getListByMaterialId(cApprovingList.get(0).getMaterialId());
            //查看产品关联
            List<MaterialProductHistory> cphLatestExistList =  cphService.getLatestExistListByMaterialId(cApprovingList.get(0).getMaterialId());
            //查看产品关联审批
            //lxw注释
            //List<MaterialProductApproving> cpaLatestExistList = cpApprovingService.getLatestExistListByMaterialId(cApprovingList.get(0).getMaterialId());
            List<MaterialProductApproving> cpaLatestExistList =new ArrayList<>();
            if(deleteApproving!=null){
                return response.set(31,deleteApproving,"拒绝本次删除申请,当前散装件正在进行删除审批");
            }
            if(cphLatestExistList!=null && cphLatestExistList.size()!=0){
                if(cpaLatestExistList!=null && cpaLatestExistList.size()!=0){
                    return response.setII(32,cpaLatestExistList,cphLatestExistList,"拒绝本次删除申请,当前散装已经关联产品及在产品关联审批");
                }else{
                    return response.setII(33,null,cphLatestExistList,"拒绝本次删除申请,当前散装件在产品关联审批");
                }
            }else{
                if(cpaLatestExistList!=null && cpaLatestExistList.size()!=0){
                    return response.set(34,cpaLatestExistList,"拒绝本次删除申请,当前散装件已经关联产品");
                }
            }
        }
        main.setType(EnumWorksheetType.Material.getType());
        //提交主表
        main.setCreateUserId(user.getId());
        //提交人角色来判断工作流层级
        if(user.getRoleId().equals("1001")){
            if(main.getId()==null) {
                main.setLevel(2);
                main.setStatus(1);
                mainMapper.insert(main);
            }
            //提交子表
            WorksheetLink link =new WorksheetLink();
            link.setMainId(main.getId());
            link.setParentId(0);
            link.setDealUserId(main.getNextUser());
            link.setDealType(1);
            link.setDealDesc(main.getDealDesc());
            link.setLinkStatus(0);
            link.setEnableArchive(0);
            linkMapper.insert(link);
        }
        else if(user.getRoleId().equals("1002")){
            if(main.getId()==null) {
                main.setLevel(1);
                main.setStatus(2);
                mainMapper.insert(main);
            }
            //提交子表
            WorksheetLink link =new WorksheetLink();
            link.setMainId(main.getId());
            link.setParentId(0);
            link.setDealUserId(main.getNextUser());
            link.setDealType(2);
            link.setDealDesc(main.getDealDesc());
            link.setLinkStatus(0);
            link.setEnableArchive(1);
            linkMapper.insert(link);
        }
        else if(user.getRoleId().equals("1003")){
            main.setLevel(0);
            main.setStatus(5);
            mainMapper.insert(main);
        }else{
            return response.set(3);
        }
        //散装件-审批提交
        cApprovingList.forEach(cApproving->{
            cApproving.setCreateDate(new Date());
            cApproving.setMainId(main.getId());
            cApproving.setStatus(1);
        });
        cApprovingService.insert(cApprovingList);
        return response.set(1);
    }
    public Response productSoftwareSubmit(MultipartFile file, WorksheetMainDTO2 mainDTO, DocUser user) throws IOException {
        Response response = new Response();
        WorksheetMain main = mainDTO.getMain();
        ProductSoftwareApproving approving = mainDTO.getApproving();
        main.setType(1);
        //提交主表
        main.setCreateUserId(user.getId());
        //提交人角色来判断工作流层级
        if(user.getRoleId().equals("1001")){
            if(main.getId()==null) {
                main.setLevel(2);
                main.setStatus(1);
                mainMapper.insert(main);
            }
            //提交子表
            WorksheetLink link =new WorksheetLink();
            link.setMainId(main.getId());
            link.setParentId(0);
            link.setDealUserId(main.getNextUser());
            link.setDealType(1);
            link.setDealDesc(main.getDealDesc());
            link.setLinkStatus(0);
            link.setEnableArchive(0);
            linkMapper.insert(link);
        }
        else if(user.getRoleId().equals("1002")){
            if(main.getId()==null) {
                main.setLevel(1);
                main.setStatus(2);
                mainMapper.insert(main);
            }
            //提交子表
            WorksheetLink link =new WorksheetLink();
            link.setMainId(main.getId());
            link.setParentId(0);
            link.setDealUserId(main.getNextUser());
            link.setDealType(2);
            link.setDealDesc(main.getDealDesc());
            link.setLinkStatus(0);
            link.setEnableArchive(1);
            linkMapper.insert(link);
        }
        else if(user.getRoleId().equals("1003")){
            main.setLevel(0);
            main.setStatus(5);
            mainMapper.insert(main);
        }else{
            return response.set(1,false,"角色无法提交审批");
        }
        //转化为审批路径
        //检查是否为zip
        boolean isZip = Zip4jUtil.checkZipFileParam(file);
        if(!isZip){
            return response.set(1,false,"上传的文件格式不是zip");
        }
        //zip存储路径:doc_file/product_approving/${username}/{dateFormat}/${timeStamp}
        String rootFile = CommonUtil.getRootFile();
        String dateFormat = new SimpleDateFormat("YYYY-MM").format(new Date());
        long timeStamp = System.currentTimeMillis();
        String productSoftwarePath =  File.separator + "product_software" + File.separator + user.getName() + File.separator + dateFormat+ File.separator + timeStamp;
        String filePath = rootFile + productSoftwarePath;
        String originalFilename = file.getOriginalFilename();
        File zipFile = new File(filePath+File.separator+ originalFilename);
        if(!zipFile.exists()){
            zipFile.mkdirs();
        }
        file.transferTo(zipFile);
        approving.setSoftwareUrl("doc_file"+productSoftwarePath+File.separator+ originalFilename);
        approving.setSoftwareName(originalFilename);
        approving.setCreateTime(new Date());
        approving.setMainId(main.getId());
        //产品软件提交
        psaService.insert(approving);
        return response.set(1,true, "提交完成");
    }
    public WorksheetMain getInfoById(Integer id) {
@@ -353,7 +585,18 @@
    }
    public WorksheetMain getLinkList(int id) {
        return mainMapper.getLinkList(id);
         //判断是哪种类型的审批,返回不同的类型 具体数据
        Integer type = getInfoById(id).getType();
        if(type.intValue() == EnumWorksheetType.ProductBom.getType()) {
            return mainMapper.getLinkList(id);
        }else if(type.intValue() == EnumWorksheetType.Material.getType()){
            //lxw注释
            //return mainMapper.getLinkListWithMaterials(id);
            return null;
        }else{ //散装件-产品
            //return mainMapper.getLinkListWithMaterialProducts(id);
            return null;
        }
    }
    public Response<PageInfo<WorksheetMain>> getApprovingListPage(DocUser user, int pageNum, int pageSize) {