guoyujia 2 months ago
parent
commit
ea5fc25aa9
1 changed files with 401 additions and 400 deletions
  1. 401 400
      src/main/java/cn/ezhizao/project/business/controller/Inc10100Controller.java

+ 401 - 400
src/main/java/cn/ezhizao/project/business/controller/Inc10100Controller.java

@@ -108,414 +108,415 @@ public class Inc10100Controller extends BaseController {
         List<Inc10100> inc10100List = IInc10100Service.getList(queryWrapper);
 //        List<BizProduct> products = productService.query().list();
         List<BizProduct> products = productService.getList(new BizProduct());
-        List<BizProduct> newProducts = new ArrayList<>();
-        List<BizProduct> changeProducts = new ArrayList<>();
-        List<SysUser> userList = sysUserService.getList();
-        SysDictData conditions = new SysDictData();
-        conditions.setDictType("product_status_code");
-        List<SysDictData> dictList = sysDictDataService.selectDictDataList(conditions);
-        List<BizShaftCategory> categories = bizShaftCategoryService.query().list();
-        inc10100List.forEach(l -> {
-            if (products.stream().anyMatch(v -> v.getProductCode().equals(l.getPart().trim()) && v.getPreStock().equals(l.getPrloc().trim()))) {
-                // 已插入产品
-                BizProduct old = products.stream().filter(v -> v.getProductCode().equals(l.getPart().trim()) && v.getPreStock().equals(l.getPrloc().trim())).findFirst().orElse(null);
-                if (old != null) {
-                    old.setType(l.getType());
-                    old.setShaftBroadCategoryCode(l.getDtype());
-                    old.setShaftCategoryCode(l.getZtype());
-                    if (old.getShaftCategoryCode() != null) {
-                        BizShaftCategory bizShaftCategory = categories.stream().filter(v -> v.getSubCategoryCode().equals(old.getShaftCategoryCode())).findFirst().orElse(null);
-                        old.setShaftCategoryId(bizShaftCategory != null ? bizShaftCategory.getId() : null);
-                    }
-                    if (old.getShaftBroadCategoryCode() != null) {
-
-                    }
-                    old.setSpecification(l.getSpec());
-                    old.setDrawingNumber(l.getDraw());
-                    old.setCompanyAlias(l.getKhjc());
-                    old.setMaterialNum(l.getKhpart());
-                    old.setCompanyCode(l.getCust());
-                    old.setDescription(l.getDescr());
-                    old.setProductionTenantId(l.getSfacno() != null ? Long.parseLong(l.getSfacno()) : null);
-                    old.setDiameter(l.getDzj());
-                    old.setLenght(l.getLenght());
-                    old.setThickness(BigDecimal.valueOf(l.getAbbr()));
-                    old.setDensity(l.getDensity());
-                    old.setSalesmanCode(l.getXsyno());
-                    if (old.getSalesmanCode() != null) {
-                        SysUser user = userList.stream().filter(v -> v.getUserName().equals(old.getSalesmanCode())).findFirst().orElse(null);
-                        old.setSalesmanId(user != null ? user.getUserId() : null);
-                    }
-                    old.setStockKeeperCode(l.getBgyno());
-                    if (old.getStockKeeperCode() != null) {
-                        SysUser bgy = userList.stream().filter(v -> v.getUserName().equals(old.getStockKeeperCode())).findFirst().orElse(null);
-                        old.setStockKeeperId(bgy != null ? bgy.getUserId() : null);
-                    }
-                    old.setDispatcherCode(l.getDdyno());
-                    if (old.getDispatcherCode() != null) {
-                        SysUser ddy = userList.stream().filter(v -> v.getUserName().equals(old.getDispatcherCode())).findFirst().orElse(null);
-                        old.setDispatcherId(ddy != null ? ddy.getUserId() : null);
-                    }
-                    old.setMaterialCode(l.getPhcode());
-                    if (old.getMaterialCode() != null) {
-                        // 目前没有材料表
-                    }
-                    old.setProductStatusCode(l.getStatus());
-                    if (old.getProductStatusCode() != null) {
-                        SysDictData dictData = dictList.stream().filter(v -> v.getDictValue().equals(old.getProductStatusCode())).findFirst().orElse(null);
-                        old.setProductStatusId(dictData != null ? dictData.getDictCode() : null);
-                    }
-                    old.setTechnicianCode(l.getJsyno());
-                    if (old.getTechnicianCode() != null) {
-                        SysUser jsy = userList.stream().filter(v -> v.getUserName().equals(old.getTechnicianCode())).findFirst().orElse(null);
-                        old.setTechnicianId(jsy != null ? jsy.getUserId() : null);
-                    }
-                    old.setRemark(l.getRemark());
-                    changeProducts.add(old);
-                }
-            } else {
-                // 新产品
-                BizProduct newProduct = new BizProduct();
-                newProduct.setProductCode(l.getPart());
-                newProduct.setMaterialNum(l.getKhpart());
-                newProduct.setPreStock(l.getPrloc());
-                newProduct.setType(l.getType());
-                newProduct.setShaftBroadCategoryCode(l.getDtype());
-                newProduct.setShaftCategoryCode(l.getZtype());
-                if (newProduct.getShaftCategoryCode() != null) {
-                    BizShaftCategory bizShaftCategory = categories.stream().filter(v -> v.getSubCategoryCode().equals(newProduct.getShaftCategoryCode())).findFirst().orElse(null);
-                    newProduct.setShaftCategoryId(bizShaftCategory != null ? bizShaftCategory.getId() : null);
-                }
-                if (newProduct.getShaftBroadCategoryCode() != null) {
-
-                }
-                newProduct.setSpecification(l.getSpec());
-                newProduct.setDrawingNumber(l.getDraw());
-                newProduct.setCompanyAlias(l.getKhjc());
-                newProduct.setCompanyCode(l.getCust());
-                newProduct.setDescription(l.getDescr());
-                newProduct.setProductionTenantId(l.getSfacno() != null ? Long.parseLong(l.getSfacno()) : null);
-                newProduct.setDiameter(l.getDzj());
-                newProduct.setLenght(l.getLenght());
-                newProduct.setThickness(BigDecimal.valueOf(l.getAbbr()));
-                newProduct.setDensity(l.getDensity());
-                newProduct.setSalesmanCode(l.getXsyno());
-                if (newProduct.getSalesmanCode() != null) {
-                    SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getSalesmanCode())).findFirst().orElse(null);
-                    newProduct.setSalesmanId(user != null ? user.getUserId() : null);
-                }
-                newProduct.setStockKeeperCode(l.getBgyno());
-                if (newProduct.getStockKeeperCode() != null) {
-                    SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getStockKeeperCode())).findFirst().orElse(null);
-                    newProduct.setStockKeeperId(user != null ? user.getUserId() : null);
-                }
-                newProduct.setDispatcherCode(l.getDdyno());
-                if (newProduct.getDispatcherCode() != null) {
-                    SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getDispatcherCode())).findFirst().orElse(null);
-                    newProduct.setDispatcherId(user != null ? user.getUserId() : null);
-                }
-                newProduct.setMaterialCode(l.getPhcode());
-                if (newProduct.getMaterialCode() != null) {
-                    // 目前没有材料表
-                }
-                newProduct.setProductStatusCode(l.getStatus());
-                if (newProduct.getProductStatusCode() != null) {
-                    SysDictData dictData = dictList.stream().filter(v -> v.getDictValue().equals(newProduct.getProductStatusCode())).findFirst().orElse(null);
-                    newProduct.setProductStatusId(dictData != null ? dictData.getDictCode() : null);
-                }
-                newProduct.setTechnicianCode(l.getJsyno());
-                if (newProduct.getTechnicianCode() != null) {
-                    SysUser jsy = userList.stream().filter(v -> v.getUserName().equals(newProduct.getTechnicianCode())).findFirst().orElse(null);
-                    newProduct.setTechnicianId(jsy != null ? jsy.getUserId() : null);
-                }
-                newProduct.setRemark(l.getRemark());
-                newProducts.add(newProduct);
-            }
-        });
-        if ((newProducts.isEmpty() || productService.saveBatch(newProducts)) && (changeProducts.isEmpty() || productService.updateBatchById(changeProducts))) {
-            BizPullP2Time bizPullP2Time = new BizPullP2Time();
-            // 将当前时间赋值给 pullTime 属性
-            bizPullP2Time.setPullTime(new Date());
-            bizPullP2Time.setType("product");
-            // 保存数据
-            pullP2TimeService.saveOrUpdate(bizPullP2Time);
-            result = result && pullP2TimeService.saveOrUpdate(bizPullP2Time);
-        } else {
-            result = false;
-        }
-        // 先从新系统中的 biz_pull_p2_time 中获取最新数据
-        BizPullP2Time pullProcess = new BizPullP2Time();
-        pullProcess.setType("productProcess");
-        List<BizPullP2Time> pullProcesses = pullP2TimeService.getList(pullProcess);
-        /*
-         * 如果 pullDetails 不为空,则获取最后一条数据,做为查询P2的生产计划明细的条件。
-         * 这里有个细节,每次从P2中获取生产计划明细,不能都从头开始,否则随着数据量增加,将会重复拉取大量的数据,性能很差
-         * 拉取数据后,存入新系统中,每次拉取前,将新系统中 biz_pull_p2_time 的最后一条数据记录的时间,做为条件传递过去
-         * P2中,获取领料时间大于上一次拉取时间的新数据,再存入新系统中。
-         */
-        BizPullP2Time lastPullProcess = null;
-        if (pullProcesses.size() > 0) {
-            int lastIndex = pullProcesses.size() - 1;
-            lastPullProcess = pullProcesses.get(lastIndex);
-        }
-        QueryWrapper<Sfc10401> sfc10401QueryWrapper = new QueryWrapper<>();
-        if (lastPullProcess != null) {
-            Date newCondition = lastPullProcess.getPullTime();
-            /*
-             * 这里应该根据新系统中记录的最大的拉取日期
-             * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
-             */
-            sfc10401QueryWrapper.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
-        }
-
-        List<Sfc10401> sfc10401List = sfc10401Service.getList(sfc10401QueryWrapper);
-        QueryWrapper<Sfc10401> sfc10401AllQueryWrapper = new QueryWrapper<>();
-        sfc10401AllQueryWrapper.in("(isnull(rtrim(cpart), '') + isnull(rtrim(prver), ''))", sfc10401List.isEmpty() ? Collections.singletonList("0") : sfc10401List.stream().map(v -> v.getCpart().trim() + v.getPrver().trim()).collect(Collectors.toList()));
-        List<Sfc10401> all10401List = sfc10401Service.getList(sfc10401AllQueryWrapper);
-        List<BizProcess> bases = processService.list();
-        List<BizTechnologicalProcessDetail> processDetails = technologicalProcessDetailService.query().list();
-        List<BizTechnologicalProcess> processes = technologicalProcessService.list();
-        List<Sfc10400> sfc10400List = sfc10400Service.getList(new QueryWrapper<>());
-        List<BizTechnologicalProcess> saveProcess = new ArrayList<>();
-        List<BizTechnologicalProcess> updateProcess = new ArrayList<>();
-        List<BizTechnologicalProcessDetail> saveProcessDetail = new ArrayList<>();
-        List<BizTechnologicalProcessDetail> updateProcessDetail = new ArrayList<>();
-        QueryWrapper<Sfc10400> changeWrapper = new QueryWrapper<>();
-        BizPullP2Time pullTech = new BizPullP2Time();
-        pullTech.setType("productTech");
-        List<BizPullP2Time> pullTeches = pullP2TimeService.getList(pullTech);
-        BizPullP2Time lastPullTech = null;
-        if (pullTeches.size() > 0) {
-            int lastIndex = pullTeches.size() - 1;
-            lastPullTech = pullTeches.get(lastIndex);
-        }
-        if (lastPullTech != null) {
-            Date newCondition = lastPullTech.getPullTime();
-            /*
-             * 这里应该根据新系统中记录的最大的拉取日期
-             * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
-             */
-            changeWrapper.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
-        }
-        List<Sfc10400> changeSfc10400 = sfc10400Service.getList(changeWrapper);
-        QueryWrapper<Sfc10401> changeAllQueryWrapper = new QueryWrapper<>();
-        changeAllQueryWrapper.in("(isnull(rtrim(cpart), '') + isnull(rtrim(prver), ''))", changeSfc10400.isEmpty() ? Collections.singletonList("0") : changeSfc10400.stream().map(v -> v.getCpart().trim() + v.getPrver().trim()).collect(Collectors.toList()));
-        List<Sfc10401> allChangeSfc10401 = sfc10401Service.getList(changeAllQueryWrapper);
-        sfc10401List.forEach(l -> {
-            // 判断是否有对应的technologicalProcessDetail
-            // 判断是工序序号的变化还是新增还是其他。
-            // 获取对应
-            Sfc10400 sfc10400 = sfc10400List.stream().filter(v -> v.getPrver().trim().equals(l.getPrver().trim()) && v.getCpart().trim().equals(l.getCpart().trim())).findFirst().orElse(new Sfc10400());
-            BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getIsHistory().equals(0)).findFirst().orElse(null);
-            // 假设旧工序存在则判断是否序号相同 假设不同添加新的工艺信息
-            if (oldTech == null) {
-                // 假设旧的工艺版本不存在新增一个新的工艺版本。然后新增一个工艺
-                if (saveProcess.stream().anyMatch(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()))) {
-                    // 判断工艺版本是否已新增过假设已新增过只新增新工艺。
-                    BizTechnologicalProcess newTech = saveProcess.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(new BizTechnologicalProcess());
-                    BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
-                    newProcess.setTechnologyVersion(l.getPrver().trim());
-                    newProcess.setProductCode(l.getCpart().trim());
-                    newProcess.setProcessCode(l.getPrcode().trim());
-                    newProcess.setProcessStepNumber(l.getPrseq());
-                    newProcess.setProcessKey(l.getFinkey());
-                    newProcess.setProcessAlias(l.getPrna());
-                    newProcess.setProductShaftCategory(l.getZtype());
-                    newProcess.setProductShaftCategoryName(l.getZtydm());
-                    newProcess.setProductDescription(l.getDescr());
-                    newProcess.setTenantId(Long.parseLong(l.getFacno()));
-                    newProcess.setTechnologicalProcessId(newTech.getId());
-                    if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
-                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
-                        newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
-                    }
-                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
-                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
-                        if (bizProduct != null) {
-                            newProcess.setProductId(bizProduct.getId());
-                        }
-                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
-                        if (bizProduct != null && newProcess.getProductId() == null) {
-                            newProcess.setProductId(bizProduct.getId());
-                        }
-                    }
-                    saveProcessDetail.add(newProcess);
-                } else {
-                    // 判断工艺版本未新增过则既新增工艺又新增工序
-                    BizTechnologicalProcess newTech = new BizTechnologicalProcess();
-                    newTech.setProductCode(sfc10400.getCpart().trim());
-                    newTech.setTechnologyVersion(l.getPrver());
-                    newTech.setTenantId(Long.parseLong(l.getFacno()));
-                    BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
-
-                    newProcess.setTechnologyVersion(l.getPrver().trim());
-                    newProcess.setProductCode(l.getCpart().trim());
-                    newProcess.setProcessCode(l.getPrcode().trim());
-                    newProcess.setProcessStepNumber(l.getPrseq());
-                    newProcess.setProcessKey(l.getFinkey());
-                    newProcess.setProcessAlias(l.getPrna());
-                    newProcess.setProductShaftCategory(l.getZtype());
-                    newProcess.setProductShaftCategoryName(l.getZtydm());
-                    newProcess.setProductDescription(l.getDescr());
-                    newProcess.setTenantId(Long.parseLong(l.getFacno()));
-                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
-                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
-                        if (bizProduct != null) {
-                            newProcess.setProductId(bizProduct.getId());
-                            newTech.setProductId(bizProduct.getId());
-                        }
-                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
-                        if (bizProduct != null && newProcess.getProductId() == null) {
-                            newProcess.setProductId(bizProduct.getId());
-                            newTech.setProductId(bizProduct.getId());
-                        }
-                        ;
-                    }
-                    if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
-                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
-                        newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
-                    }
-                    newTech.setProductShaftCategory(sfc10400.getZtype());
-                    newTech.setProductShaftCategoryName(sfc10400.getZtydm());
-                    newTech.setProductSpecification(sfc10400.getSpec());
-                    newTech.setProductDrawingNumber(sfc10400.getDraw());
-                    newTech.setProductDescription(sfc10400.getDescr());
-                    newTech.setId(snowflakeIdWorker.nextId());
-                    saveProcess.add(newTech);
-                    newProcess.setTechnologicalProcessId(newTech.getId());
-
-                    saveProcessDetail.add(newProcess);
-                }
-            } else {
-                BizTechnologicalProcessDetail old = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim()) && v.getProcessCode().equals(l.getPrcode().trim()) && v.getTechnologicalProcessId().equals(oldTech.getId())).findFirst().orElse(null);
-                Long count = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim())).count();
-                Long newCount = all10401List.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).count();
-                if (old == null || !old.getProcessStepNumber().trim().equals(l.getPrseq().trim()) || !newCount.equals(count)) {
-                    // 假设旧工艺不存在,或新的工艺序号和旧的不同则将旧工艺版本isHistory置为1
-                    oldTech.setIsHistory(1);
-                    updateProcess.add(oldTech);
-                    BizTechnologicalProcess newTech;
-                    // 判断是否已加过对应工艺
-                    if (!saveProcess.stream().anyMatch(v -> v.getProductCode().trim().equals(l.getCpart().trim()) && v.getTechnologyVersion().trim().equals(l.getPrver()))) {
-                        newTech = new BizTechnologicalProcess(oldTech);
-                        newTech.setIsHistory(0);
-                        newTech.setId(snowflakeIdWorker.nextId());
-                        saveProcess.add(newTech);
-                        // 添加所有工艺明细
-                        List<Sfc10401> itemProcesses = all10401List.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).collect(Collectors.toList());
-                        itemProcesses.forEach(e -> {
-                            BizTechnologicalProcessDetail newItem = new BizTechnologicalProcessDetail(e);
-                            newItem.setTechnologicalProcessId(newTech.getId());
-                            if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
-                                BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
-                                if (bizProduct != null) {
-                                    newItem.setProductId(bizProduct.getId());
-                                }
-                                bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
-                                if (bizProduct != null && newItem.getProductId() == null) {
-                                    newItem.setProductId(bizProduct.getId());
-                                }
-                            }
-                            if (newItem.getProcessCode() != null && !newItem.getProcessCode().isEmpty()) {
-                                BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(e.getPrcode().trim())).findFirst().orElse(null);
-                                newItem.setProcessId(bizProcess == null ? null : bizProcess.getId());
-                            }
-                            saveProcessDetail.add(newItem);
-                        });
-                    }
-                } else {
-                    // 假设工艺存在则更新工艺信息
-                    old.setProcessKey(l.getFinkey());
-                    old.setProcessAlias(l.getPrna());
-                    old.setProductShaftCategory(l.getZtype());
-                    old.setProductShaftCategoryName(l.getZtydm());
-                    old.setProductDescription(l.getDescr());
-                    updateProcessDetail.add(old);
-                }
-            }
-        });
-        changeSfc10400.forEach(l -> {
-            BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getIsHistory().equals(0)).findFirst().orElse(null);
-            // 判断是否已有新版本 假设已有不更新 没有则更新
-            Long count = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim())).count();
-            Long newCount = allChangeSfc10401.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).count();
-            if (!saveProcess.stream().anyMatch(t -> t.getProductCode().trim().equals(l.getCpart().trim()) && t.getTechnologyVersion().trim().equals(l.getPrver().trim())) && !count.equals(newCount)) {
-                oldTech.setIsHistory(1);
-                updateProcess.add(oldTech);
-                BizTechnologicalProcess newTech;
-                // 判断是否已加过对应工艺
-                newTech = new BizTechnologicalProcess(oldTech);
-                if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
-                    BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
-                    System.out.println("____________________");
-                    System.out.println(products.get(0));
-                    System.out.println("________________________________________");
-                    System.out.println(bizProduct);
-                    if (bizProduct != null) {
-                        newTech.setProductId(bizProduct.getId());
-                    }
-                    bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
-                    if (bizProduct != null && newTech.getProductId() == null) {
-                        newTech.setProductId(bizProduct.getId());
-                    }
-                }
-                newTech.setIsHistory(0);
-                newTech.setId(snowflakeIdWorker.nextId());
-                saveProcess.add(newTech);
-                // 添加所有工艺明细
-                List<Sfc10401> itemProcesses = allChangeSfc10401.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).collect(Collectors.toList());
-                itemProcesses.forEach(e -> {
-                    BizTechnologicalProcessDetail newItem = new BizTechnologicalProcessDetail(e);
-                    newItem.setTechnologicalProcessId(newTech.getId());
-                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
-                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
-                        if (bizProduct != null) {
-                            newItem.setProductId(bizProduct.getId());
-                        }
-                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
-                        if (bizProduct != null && newItem.getProductId() == null) {
-                            newItem.setProductId(bizProduct.getId());
-                        }
-                    }
-                    if (newItem.getProcessCode() != null && !newItem.getProcessCode().isEmpty()) {
-                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(e.getPrcode().trim())).findFirst().orElse(null);
-                        newItem.setProcessId(bizProcess == null ? null : bizProcess.getId());
-                    }
-                    saveProcessDetail.add(newItem);
-                });
-
-            }
-        });
-        List<BizTechnologicalProcessDetail> distinctSaveProcessDetail = saveProcessDetail.stream().filter(distinctByKey(e -> e.getProductCode() + e.getProcessCode() + e.getTechnologyVersion() + e.getProcessStepNumber() + e.getTechnologicalProcessId())).collect(Collectors.toList());
-        if ((saveProcess.isEmpty() || technologicalProcessService.saveBatch(saveProcess)) && (updateProcess.isEmpty() || technologicalProcessService.updateBatchById(updateProcess)) && (distinctSaveProcessDetail.isEmpty() || technologicalProcessDetailService.saveBatch(distinctSaveProcessDetail)) && (updateProcessDetail.isEmpty() || technologicalProcessDetailService.updateBatchById(updateProcessDetail))) {
-            BizPullP2Time bizPullP2Time = new BizPullP2Time();
-            // 将当前时间赋值给 pullTime 属性
-            bizPullP2Time.setPullTime(new Date());
-            bizPullP2Time.setType("productProcess");
-            // 保存数据
-            pullP2TimeService.saveOrUpdate(bizPullP2Time);
-
-            BizPullP2Time bizPullP2Tech = new BizPullP2Time();
-            // 将当前时间赋值给 pullTime 属性
-            bizPullP2Tech.setPullTime(new Date());
-            bizPullP2Tech.setType("productTech");
-            // 保存数据
-//            pullP2TimeService.saveOrUpdate(bizPullP2Tech);
-            result = result && pullP2TimeService.saveOrUpdate(bizPullP2Tech);
-        } else {
-            result = false;
-        }
+        System.out.println(products.get(0));
+//        List<BizProduct> newProducts = new ArrayList<>();
+//        List<BizProduct> changeProducts = new ArrayList<>();
+//        List<SysUser> userList = sysUserService.getList();
+//        SysDictData conditions = new SysDictData();
+//        conditions.setDictType("product_status_code");
+//        List<SysDictData> dictList = sysDictDataService.selectDictDataList(conditions);
+//        List<BizShaftCategory> categories = bizShaftCategoryService.query().list();
+//        inc10100List.forEach(l -> {
+//            if (products.stream().anyMatch(v -> v.getProductCode().equals(l.getPart().trim()) && v.getPreStock().equals(l.getPrloc().trim()))) {
+//                // 已插入产品
+//                BizProduct old = products.stream().filter(v -> v.getProductCode().equals(l.getPart().trim()) && v.getPreStock().equals(l.getPrloc().trim())).findFirst().orElse(null);
+//                if (old != null) {
+//                    old.setType(l.getType());
+//                    old.setShaftBroadCategoryCode(l.getDtype());
+//                    old.setShaftCategoryCode(l.getZtype());
+//                    if (old.getShaftCategoryCode() != null) {
+//                        BizShaftCategory bizShaftCategory = categories.stream().filter(v -> v.getSubCategoryCode().equals(old.getShaftCategoryCode())).findFirst().orElse(null);
+//                        old.setShaftCategoryId(bizShaftCategory != null ? bizShaftCategory.getId() : null);
+//                    }
+//                    if (old.getShaftBroadCategoryCode() != null) {
+//
+//                    }
+//                    old.setSpecification(l.getSpec());
+//                    old.setDrawingNumber(l.getDraw());
+//                    old.setCompanyAlias(l.getKhjc());
+//                    old.setMaterialNum(l.getKhpart());
+//                    old.setCompanyCode(l.getCust());
+//                    old.setDescription(l.getDescr());
+//                    old.setProductionTenantId(l.getSfacno() != null ? Long.parseLong(l.getSfacno()) : null);
+//                    old.setDiameter(l.getDzj());
+//                    old.setLenght(l.getLenght());
+//                    old.setThickness(BigDecimal.valueOf(l.getAbbr()));
+//                    old.setDensity(l.getDensity());
+//                    old.setSalesmanCode(l.getXsyno());
+//                    if (old.getSalesmanCode() != null) {
+//                        SysUser user = userList.stream().filter(v -> v.getUserName().equals(old.getSalesmanCode())).findFirst().orElse(null);
+//                        old.setSalesmanId(user != null ? user.getUserId() : null);
+//                    }
+//                    old.setStockKeeperCode(l.getBgyno());
+//                    if (old.getStockKeeperCode() != null) {
+//                        SysUser bgy = userList.stream().filter(v -> v.getUserName().equals(old.getStockKeeperCode())).findFirst().orElse(null);
+//                        old.setStockKeeperId(bgy != null ? bgy.getUserId() : null);
+//                    }
+//                    old.setDispatcherCode(l.getDdyno());
+//                    if (old.getDispatcherCode() != null) {
+//                        SysUser ddy = userList.stream().filter(v -> v.getUserName().equals(old.getDispatcherCode())).findFirst().orElse(null);
+//                        old.setDispatcherId(ddy != null ? ddy.getUserId() : null);
+//                    }
+//                    old.setMaterialCode(l.getPhcode());
+//                    if (old.getMaterialCode() != null) {
+//                        // 目前没有材料表
+//                    }
+//                    old.setProductStatusCode(l.getStatus());
+//                    if (old.getProductStatusCode() != null) {
+//                        SysDictData dictData = dictList.stream().filter(v -> v.getDictValue().equals(old.getProductStatusCode())).findFirst().orElse(null);
+//                        old.setProductStatusId(dictData != null ? dictData.getDictCode() : null);
+//                    }
+//                    old.setTechnicianCode(l.getJsyno());
+//                    if (old.getTechnicianCode() != null) {
+//                        SysUser jsy = userList.stream().filter(v -> v.getUserName().equals(old.getTechnicianCode())).findFirst().orElse(null);
+//                        old.setTechnicianId(jsy != null ? jsy.getUserId() : null);
+//                    }
+//                    old.setRemark(l.getRemark());
+//                    changeProducts.add(old);
+//                }
+//            } else {
+//                // 新产品
+//                BizProduct newProduct = new BizProduct();
+//                newProduct.setProductCode(l.getPart());
+//                newProduct.setMaterialNum(l.getKhpart());
+//                newProduct.setPreStock(l.getPrloc());
+//                newProduct.setType(l.getType());
+//                newProduct.setShaftBroadCategoryCode(l.getDtype());
+//                newProduct.setShaftCategoryCode(l.getZtype());
+//                if (newProduct.getShaftCategoryCode() != null) {
+//                    BizShaftCategory bizShaftCategory = categories.stream().filter(v -> v.getSubCategoryCode().equals(newProduct.getShaftCategoryCode())).findFirst().orElse(null);
+//                    newProduct.setShaftCategoryId(bizShaftCategory != null ? bizShaftCategory.getId() : null);
+//                }
+//                if (newProduct.getShaftBroadCategoryCode() != null) {
 //
-//        QueryWrapper<Sfc10401> test = new QueryWrapper<>();
+//                }
+//                newProduct.setSpecification(l.getSpec());
+//                newProduct.setDrawingNumber(l.getDraw());
+//                newProduct.setCompanyAlias(l.getKhjc());
+//                newProduct.setCompanyCode(l.getCust());
+//                newProduct.setDescription(l.getDescr());
+//                newProduct.setProductionTenantId(l.getSfacno() != null ? Long.parseLong(l.getSfacno()) : null);
+//                newProduct.setDiameter(l.getDzj());
+//                newProduct.setLenght(l.getLenght());
+//                newProduct.setThickness(BigDecimal.valueOf(l.getAbbr()));
+//                newProduct.setDensity(l.getDensity());
+//                newProduct.setSalesmanCode(l.getXsyno());
+//                if (newProduct.getSalesmanCode() != null) {
+//                    SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getSalesmanCode())).findFirst().orElse(null);
+//                    newProduct.setSalesmanId(user != null ? user.getUserId() : null);
+//                }
+//                newProduct.setStockKeeperCode(l.getBgyno());
+//                if (newProduct.getStockKeeperCode() != null) {
+//                    SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getStockKeeperCode())).findFirst().orElse(null);
+//                    newProduct.setStockKeeperId(user != null ? user.getUserId() : null);
+//                }
+//                newProduct.setDispatcherCode(l.getDdyno());
+//                if (newProduct.getDispatcherCode() != null) {
+//                    SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getDispatcherCode())).findFirst().orElse(null);
+//                    newProduct.setDispatcherId(user != null ? user.getUserId() : null);
+//                }
+//                newProduct.setMaterialCode(l.getPhcode());
+//                if (newProduct.getMaterialCode() != null) {
+//                    // 目前没有材料表
+//                }
+//                newProduct.setProductStatusCode(l.getStatus());
+//                if (newProduct.getProductStatusCode() != null) {
+//                    SysDictData dictData = dictList.stream().filter(v -> v.getDictValue().equals(newProduct.getProductStatusCode())).findFirst().orElse(null);
+//                    newProduct.setProductStatusId(dictData != null ? dictData.getDictCode() : null);
+//                }
+//                newProduct.setTechnicianCode(l.getJsyno());
+//                if (newProduct.getTechnicianCode() != null) {
+//                    SysUser jsy = userList.stream().filter(v -> v.getUserName().equals(newProduct.getTechnicianCode())).findFirst().orElse(null);
+//                    newProduct.setTechnicianId(jsy != null ? jsy.getUserId() : null);
+//                }
+//                newProduct.setRemark(l.getRemark());
+//                newProducts.add(newProduct);
+//            }
+//        });
+//        if ((newProducts.isEmpty() || productService.saveBatch(newProducts)) && (changeProducts.isEmpty() || productService.updateBatchById(changeProducts))) {
+//            BizPullP2Time bizPullP2Time = new BizPullP2Time();
+//            // 将当前时间赋值给 pullTime 属性
+//            bizPullP2Time.setPullTime(new Date());
+//            bizPullP2Time.setType("product");
+//            // 保存数据
+//            pullP2TimeService.saveOrUpdate(bizPullP2Time);
+//            result = result && pullP2TimeService.saveOrUpdate(bizPullP2Time);
+//        } else {
+//            result = false;
+//        }
+//        // 先从新系统中的 biz_pull_p2_time 中获取最新数据
+//        BizPullP2Time pullProcess = new BizPullP2Time();
+//        pullProcess.setType("productProcess");
+//        List<BizPullP2Time> pullProcesses = pullP2TimeService.getList(pullProcess);
+//        /*
+//         * 如果 pullDetails 不为空,则获取最后一条数据,做为查询P2的生产计划明细的条件。
+//         * 这里有个细节,每次从P2中获取生产计划明细,不能都从头开始,否则随着数据量增加,将会重复拉取大量的数据,性能很差
+//         * 拉取数据后,存入新系统中,每次拉取前,将新系统中 biz_pull_p2_time 的最后一条数据记录的时间,做为条件传递过去
+//         * P2中,获取领料时间大于上一次拉取时间的新数据,再存入新系统中。
+//         */
+//        BizPullP2Time lastPullProcess = null;
+//        if (pullProcesses.size() > 0) {
+//            int lastIndex = pullProcesses.size() - 1;
+//            lastPullProcess = pullProcesses.get(lastIndex);
+//        }
+//        QueryWrapper<Sfc10401> sfc10401QueryWrapper = new QueryWrapper<>();
 //        if (lastPullProcess != null) {
 //            Date newCondition = lastPullProcess.getPullTime();
 //            /*
 //             * 这里应该根据新系统中记录的最大的拉取日期
 //             * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
 //             */
-//            test.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
+//            sfc10401QueryWrapper.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
+//        }
+//
+//        List<Sfc10401> sfc10401List = sfc10401Service.getList(sfc10401QueryWrapper);
+//        QueryWrapper<Sfc10401> sfc10401AllQueryWrapper = new QueryWrapper<>();
+//        sfc10401AllQueryWrapper.in("(isnull(rtrim(cpart), '') + isnull(rtrim(prver), ''))", sfc10401List.isEmpty() ? Collections.singletonList("0") : sfc10401List.stream().map(v -> v.getCpart().trim() + v.getPrver().trim()).collect(Collectors.toList()));
+//        List<Sfc10401> all10401List = sfc10401Service.getList(sfc10401AllQueryWrapper);
+//        List<BizProcess> bases = processService.list();
+//        List<BizTechnologicalProcessDetail> processDetails = technologicalProcessDetailService.query().list();
+//        List<BizTechnologicalProcess> processes = technologicalProcessService.list();
+//        List<Sfc10400> sfc10400List = sfc10400Service.getList(new QueryWrapper<>());
+//        List<BizTechnologicalProcess> saveProcess = new ArrayList<>();
+//        List<BizTechnologicalProcess> updateProcess = new ArrayList<>();
+//        List<BizTechnologicalProcessDetail> saveProcessDetail = new ArrayList<>();
+//        List<BizTechnologicalProcessDetail> updateProcessDetail = new ArrayList<>();
+//        QueryWrapper<Sfc10400> changeWrapper = new QueryWrapper<>();
+//        BizPullP2Time pullTech = new BizPullP2Time();
+//        pullTech.setType("productTech");
+//        List<BizPullP2Time> pullTeches = pullP2TimeService.getList(pullTech);
+//        BizPullP2Time lastPullTech = null;
+//        if (pullTeches.size() > 0) {
+//            int lastIndex = pullTeches.size() - 1;
+//            lastPullTech = pullTeches.get(lastIndex);
+//        }
+//        if (lastPullTech != null) {
+//            Date newCondition = lastPullTech.getPullTime();
+//            /*
+//             * 这里应该根据新系统中记录的最大的拉取日期
+//             * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
+//             */
+//            changeWrapper.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
+//        }
+//        List<Sfc10400> changeSfc10400 = sfc10400Service.getList(changeWrapper);
+//        QueryWrapper<Sfc10401> changeAllQueryWrapper = new QueryWrapper<>();
+//        changeAllQueryWrapper.in("(isnull(rtrim(cpart), '') + isnull(rtrim(prver), ''))", changeSfc10400.isEmpty() ? Collections.singletonList("0") : changeSfc10400.stream().map(v -> v.getCpart().trim() + v.getPrver().trim()).collect(Collectors.toList()));
+//        List<Sfc10401> allChangeSfc10401 = sfc10401Service.getList(changeAllQueryWrapper);
+//        sfc10401List.forEach(l -> {
+//            // 判断是否有对应的technologicalProcessDetail
+//            // 判断是工序序号的变化还是新增还是其他。
+//            // 获取对应
+//            Sfc10400 sfc10400 = sfc10400List.stream().filter(v -> v.getPrver().trim().equals(l.getPrver().trim()) && v.getCpart().trim().equals(l.getCpart().trim())).findFirst().orElse(new Sfc10400());
+//            BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getIsHistory().equals(0)).findFirst().orElse(null);
+//            // 假设旧工序存在则判断是否序号相同 假设不同添加新的工艺信息
+//            if (oldTech == null) {
+//                // 假设旧的工艺版本不存在新增一个新的工艺版本。然后新增一个工艺
+//                if (saveProcess.stream().anyMatch(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()))) {
+//                    // 判断工艺版本是否已新增过假设已新增过只新增新工艺。
+//                    BizTechnologicalProcess newTech = saveProcess.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(new BizTechnologicalProcess());
+//                    BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
+//                    newProcess.setTechnologyVersion(l.getPrver().trim());
+//                    newProcess.setProductCode(l.getCpart().trim());
+//                    newProcess.setProcessCode(l.getPrcode().trim());
+//                    newProcess.setProcessStepNumber(l.getPrseq());
+//                    newProcess.setProcessKey(l.getFinkey());
+//                    newProcess.setProcessAlias(l.getPrna());
+//                    newProcess.setProductShaftCategory(l.getZtype());
+//                    newProcess.setProductShaftCategoryName(l.getZtydm());
+//                    newProcess.setProductDescription(l.getDescr());
+//                    newProcess.setTenantId(Long.parseLong(l.getFacno()));
+//                    newProcess.setTechnologicalProcessId(newTech.getId());
+//                    if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
+//                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
+//                        newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
+//                    }
+//                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
+//                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
+//                        if (bizProduct != null) {
+//                            newProcess.setProductId(bizProduct.getId());
+//                        }
+//                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
+//                        if (bizProduct != null && newProcess.getProductId() == null) {
+//                            newProcess.setProductId(bizProduct.getId());
+//                        }
+//                    }
+//                    saveProcessDetail.add(newProcess);
+//                } else {
+//                    // 判断工艺版本未新增过则既新增工艺又新增工序
+//                    BizTechnologicalProcess newTech = new BizTechnologicalProcess();
+//                    newTech.setProductCode(sfc10400.getCpart().trim());
+//                    newTech.setTechnologyVersion(l.getPrver());
+//                    newTech.setTenantId(Long.parseLong(l.getFacno()));
+//                    BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
+//
+//                    newProcess.setTechnologyVersion(l.getPrver().trim());
+//                    newProcess.setProductCode(l.getCpart().trim());
+//                    newProcess.setProcessCode(l.getPrcode().trim());
+//                    newProcess.setProcessStepNumber(l.getPrseq());
+//                    newProcess.setProcessKey(l.getFinkey());
+//                    newProcess.setProcessAlias(l.getPrna());
+//                    newProcess.setProductShaftCategory(l.getZtype());
+//                    newProcess.setProductShaftCategoryName(l.getZtydm());
+//                    newProcess.setProductDescription(l.getDescr());
+//                    newProcess.setTenantId(Long.parseLong(l.getFacno()));
+//                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
+//                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
+//                        if (bizProduct != null) {
+//                            newProcess.setProductId(bizProduct.getId());
+//                            newTech.setProductId(bizProduct.getId());
+//                        }
+//                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
+//                        if (bizProduct != null && newProcess.getProductId() == null) {
+//                            newProcess.setProductId(bizProduct.getId());
+//                            newTech.setProductId(bizProduct.getId());
+//                        }
+//                        ;
+//                    }
+//                    if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
+//                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
+//                        newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
+//                    }
+//                    newTech.setProductShaftCategory(sfc10400.getZtype());
+//                    newTech.setProductShaftCategoryName(sfc10400.getZtydm());
+//                    newTech.setProductSpecification(sfc10400.getSpec());
+//                    newTech.setProductDrawingNumber(sfc10400.getDraw());
+//                    newTech.setProductDescription(sfc10400.getDescr());
+//                    newTech.setId(snowflakeIdWorker.nextId());
+//                    saveProcess.add(newTech);
+//                    newProcess.setTechnologicalProcessId(newTech.getId());
+//
+//                    saveProcessDetail.add(newProcess);
+//                }
+//            } else {
+//                BizTechnologicalProcessDetail old = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim()) && v.getProcessCode().equals(l.getPrcode().trim()) && v.getTechnologicalProcessId().equals(oldTech.getId())).findFirst().orElse(null);
+//                Long count = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim())).count();
+//                Long newCount = all10401List.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).count();
+//                if (old == null || !old.getProcessStepNumber().trim().equals(l.getPrseq().trim()) || !newCount.equals(count)) {
+//                    // 假设旧工艺不存在,或新的工艺序号和旧的不同则将旧工艺版本isHistory置为1
+//                    oldTech.setIsHistory(1);
+//                    updateProcess.add(oldTech);
+//                    BizTechnologicalProcess newTech;
+//                    // 判断是否已加过对应工艺
+//                    if (!saveProcess.stream().anyMatch(v -> v.getProductCode().trim().equals(l.getCpart().trim()) && v.getTechnologyVersion().trim().equals(l.getPrver()))) {
+//                        newTech = new BizTechnologicalProcess(oldTech);
+//                        newTech.setIsHistory(0);
+//                        newTech.setId(snowflakeIdWorker.nextId());
+//                        saveProcess.add(newTech);
+//                        // 添加所有工艺明细
+//                        List<Sfc10401> itemProcesses = all10401List.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).collect(Collectors.toList());
+//                        itemProcesses.forEach(e -> {
+//                            BizTechnologicalProcessDetail newItem = new BizTechnologicalProcessDetail(e);
+//                            newItem.setTechnologicalProcessId(newTech.getId());
+//                            if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
+//                                BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
+//                                if (bizProduct != null) {
+//                                    newItem.setProductId(bizProduct.getId());
+//                                }
+//                                bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
+//                                if (bizProduct != null && newItem.getProductId() == null) {
+//                                    newItem.setProductId(bizProduct.getId());
+//                                }
+//                            }
+//                            if (newItem.getProcessCode() != null && !newItem.getProcessCode().isEmpty()) {
+//                                BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(e.getPrcode().trim())).findFirst().orElse(null);
+//                                newItem.setProcessId(bizProcess == null ? null : bizProcess.getId());
+//                            }
+//                            saveProcessDetail.add(newItem);
+//                        });
+//                    }
+//                } else {
+//                    // 假设工艺存在则更新工艺信息
+//                    old.setProcessKey(l.getFinkey());
+//                    old.setProcessAlias(l.getPrna());
+//                    old.setProductShaftCategory(l.getZtype());
+//                    old.setProductShaftCategoryName(l.getZtydm());
+//                    old.setProductDescription(l.getDescr());
+//                    updateProcessDetail.add(old);
+//                }
+//            }
+//        });
+//        changeSfc10400.forEach(l -> {
+//            BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getIsHistory().equals(0)).findFirst().orElse(null);
+//            // 判断是否已有新版本 假设已有不更新 没有则更新
+//            Long count = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim())).count();
+//            Long newCount = allChangeSfc10401.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).count();
+//            if (!saveProcess.stream().anyMatch(t -> t.getProductCode().trim().equals(l.getCpart().trim()) && t.getTechnologyVersion().trim().equals(l.getPrver().trim())) && !count.equals(newCount)) {
+//                oldTech.setIsHistory(1);
+//                updateProcess.add(oldTech);
+//                BizTechnologicalProcess newTech;
+//                // 判断是否已加过对应工艺
+//                newTech = new BizTechnologicalProcess(oldTech);
+//                if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
+//                    BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
+//                    System.out.println("____________________");
+//                    System.out.println(products.get(0));
+//                    System.out.println("________________________________________");
+//                    System.out.println(bizProduct);
+//                    if (bizProduct != null) {
+//                        newTech.setProductId(bizProduct.getId());
+//                    }
+//                    bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
+//                    if (bizProduct != null && newTech.getProductId() == null) {
+//                        newTech.setProductId(bizProduct.getId());
+//                    }
+//                }
+//                newTech.setIsHistory(0);
+//                newTech.setId(snowflakeIdWorker.nextId());
+//                saveProcess.add(newTech);
+//                // 添加所有工艺明细
+//                List<Sfc10401> itemProcesses = allChangeSfc10401.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).collect(Collectors.toList());
+//                itemProcesses.forEach(e -> {
+//                    BizTechnologicalProcessDetail newItem = new BizTechnologicalProcessDetail(e);
+//                    newItem.setTechnologicalProcessId(newTech.getId());
+//                    if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
+//                        BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
+//                        if (bizProduct != null) {
+//                            newItem.setProductId(bizProduct.getId());
+//                        }
+//                        bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
+//                        if (bizProduct != null && newItem.getProductId() == null) {
+//                            newItem.setProductId(bizProduct.getId());
+//                        }
+//                    }
+//                    if (newItem.getProcessCode() != null && !newItem.getProcessCode().isEmpty()) {
+//                        BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(e.getPrcode().trim())).findFirst().orElse(null);
+//                        newItem.setProcessId(bizProcess == null ? null : bizProcess.getId());
+//                    }
+//                    saveProcessDetail.add(newItem);
+//                });
+//
+//            }
+//        });
+//        List<BizTechnologicalProcessDetail> distinctSaveProcessDetail = saveProcessDetail.stream().filter(distinctByKey(e -> e.getProductCode() + e.getProcessCode() + e.getTechnologyVersion() + e.getProcessStepNumber() + e.getTechnologicalProcessId())).collect(Collectors.toList());
+//        if ((saveProcess.isEmpty() || technologicalProcessService.saveBatch(saveProcess)) && (updateProcess.isEmpty() || technologicalProcessService.updateBatchById(updateProcess)) && (distinctSaveProcessDetail.isEmpty() || technologicalProcessDetailService.saveBatch(distinctSaveProcessDetail)) && (updateProcessDetail.isEmpty() || technologicalProcessDetailService.updateBatchById(updateProcessDetail))) {
+//            BizPullP2Time bizPullP2Time = new BizPullP2Time();
+//            // 将当前时间赋值给 pullTime 属性
+//            bizPullP2Time.setPullTime(new Date());
+//            bizPullP2Time.setType("productProcess");
+//            // 保存数据
+//            pullP2TimeService.saveOrUpdate(bizPullP2Time);
+//
+//            BizPullP2Time bizPullP2Tech = new BizPullP2Time();
+//            // 将当前时间赋值给 pullTime 属性
+//            bizPullP2Tech.setPullTime(new Date());
+//            bizPullP2Tech.setType("productTech");
+//            // 保存数据
+////            pullP2TimeService.saveOrUpdate(bizPullP2Tech);
+//            result = result && pullP2TimeService.saveOrUpdate(bizPullP2Tech);
+//        } else {
+//            result = false;
 //        }
-//        sfc10401Service.getList(test);
+////
+////        QueryWrapper<Sfc10401> test = new QueryWrapper<>();
+////        if (lastPullProcess != null) {
+////            Date newCondition = lastPullProcess.getPullTime();
+////            /*
+////             * 这里应该根据新系统中记录的最大的拉取日期
+////             * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
+////             */
+////            test.apply("modate IS NOT NULL  AND modate > {0}", new DateTime(newCondition).toString("yyyy-MM-dd HH:mm:ss"));
+////        }
+////        sfc10401Service.getList(test);
         return toAjax(result);
     }