From 7356633a0cd541be099ceb97981499d523b877f1 Mon Sep 17 00:00:00 2001 From: shaoyong Date: Tue, 26 Sep 2023 17:34:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=EF=BC=8C=E5=AE=A2=E6=88=B7=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/sap/controller/SapController.java | 50 ++++++++++++- .../java/com/op/sap/mapper/SapBomMapper.java | 10 ++- .../op/sap/service/SapWorkCenterService.java | 4 + .../impl/SapWorkCenterServiceImpl.java | 74 ++++++++++++++++++- .../resources/mapper/sap/SapBomMapper.xml | 49 ++++++++++++ 5 files changed, 181 insertions(+), 6 deletions(-) diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index d69113d6..e56987b2 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -183,7 +183,30 @@ public class SapController extends BaseController { @Log(title = "供应商主数据", businessType = BusinessType.SAP) public R sapSupplierSync(){ SapSupplierQuery sapSupplierQuery = new SapSupplierQuery(); - return sapWorkCenterService.sapSupplierSync(sapSupplierQuery); + // 加载sf-cloud库的sys_datasource + SysUser sysUser = new SysUser(); + sysUser.setUserId(1L); + R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + dateSources.forEach(dateSource -> { + logger.info("++++++++++++" + dateSource.get("poolName") + "++++供应商主数据开始++++++++++"); + DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key + sapSupplierQuery.setBukrs(dateSource.get("poolName").replace("ds_",""));//工厂 + Date maxTime = sapBomMapper.getMaxTime(); + if(maxTime != null){ + sapSupplierQuery.setErdat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923 + } + + R r = sapWorkCenterService.sapSupplierSync(sapSupplierQuery); + if(r.getCode()==200){ + List dtos = (List) r.getData(); + sapWorkCenterService.syncSupplier(dtos); + }else{ + logger.error("++++++++++++" + dateSource.get("poolName")+"错误信息:"+ r.getMsg()); + } + logger.error("++++++++++++" + dateSource.get("poolName") + "++++供应商主数据结束++++++++++"); + }); + return R.ok(); } /** @@ -195,7 +218,30 @@ public class SapController extends BaseController { @Log(title = "客户主数据", businessType = BusinessType.SAP) public R sapCustomSync(){ SapCustom sapCustom = new SapCustom(); - return sapWorkCenterService.sapCustomSync(sapCustom); + // 加载sf-cloud库的sys_datasource + SysUser sysUser = new SysUser(); + sysUser.setUserId(1L); + R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + dateSources.forEach(dateSource -> { + logger.info("++++++++++++" + dateSource.get("poolName") + "++++客户主数据开始++++++++++"); + DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key + sapCustom.setBukrs(dateSource.get("poolName").replace("ds_",""));//工厂 + Date maxTime = sapBomMapper.getMaxTime(); + if(maxTime != null){ + sapCustom.setErdat(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923 + } + + R r = sapWorkCenterService.sapCustomSync(sapCustom); + if(r.getCode()==200){ + List dtos = (List) r.getData(); + sapWorkCenterService.syncCustom(dtos); + }else{ + logger.error("++++++++++++" + dateSource.get("poolName")+"错误信息:"+ r.getMsg()); + } + logger.error("++++++++++++" + dateSource.get("poolName") + "++++客户主数据结束++++++++++"); + }); + return R.ok(); } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java index 8aeaee48..3ffbf46d 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java @@ -1,8 +1,6 @@ package com.op.sap.mapper; -import com.op.system.api.domain.sap.SapBom; -import com.op.system.api.domain.sap.SapBomComponent; -import com.op.system.api.domain.sap.SapWorkCenter; +import com.op.system.api.domain.sap.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -32,5 +30,11 @@ public interface SapBomMapper { int addFactoryBatchs(@Param("list")List adds); + int updateSupplierBatchs(@Param("list")List updates); + int addSupplierBatchs(@Param("list")List adds); + + int updateCustomBatchs(@Param("list")List updates); + int addCustomBatchs(@Param("list")List adds); + String getParentId(String factoryCode); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWorkCenterService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWorkCenterService.java index 396c0b3f..77ab7f47 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWorkCenterService.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWorkCenterService.java @@ -19,4 +19,8 @@ public interface SapWorkCenterService { R sapCustomSync(SapCustom sapCustom); void syncWorkCenter(List dtos); + + void syncSupplier(List dtos); + + void syncCustom(List dtos); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWorkCenterServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWorkCenterServiceImpl.java index 393d495b..f113fa3a 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWorkCenterServiceImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWorkCenterServiceImpl.java @@ -260,7 +260,7 @@ public class SapWorkCenterServiceImpl implements SapWorkCenterService { /**sys_factory**/ @Override public void syncWorkCenter(List dtos) { - //sap返回的工作中心编码 + //sap返回的供应商编码 List codes = dtos.stream().map(SapWorkCenter::getArbpl).collect(Collectors.toList()); //sap返回的工作中心编码-本地已存在 List exsitCodes = sapBomMapper.getExsitCodes(codes); @@ -290,5 +290,77 @@ public class SapWorkCenterServiceImpl implements SapWorkCenterService { System.out.println("工作中心新增成功条数:"+ n); } } + /** + * 供应商 + * @param dtos + */ + @Override + public void syncSupplier(List dtos) { + //sap返回的供应商编码 + List codes = dtos.stream().map(SapSupplier::getLifnr).collect(Collectors.toList()); + //sap返回的供应商编码-本地已存在 + List exsitCodes = sapBomMapper.getExsitCodes(codes); + //sap返回的供应商编码-本地不存在// 差集 (list2 - list1) + List noExsitCodes = codes.stream().filter(item -> !exsitCodes.contains(item)).collect(Collectors.toList()); + + List updates = new ArrayList<>(); + for(String exsitCode:exsitCodes){ + updates = dtos.stream().filter(dto -> dto.getLifnr().equals(exsitCode)).collect(Collectors.toList()); + } + if(CollectionUtils.isEmpty(updates)){ + int m = sapBomMapper.updateSupplierBatchs(updates); + System.out.println("供应商更新成功条数:"+m); + } + List adds = new ArrayList<>(); + for(String noExsitCode:noExsitCodes){ + adds = dtos.stream().filter(dto -> dto.getLifnr().equals(noExsitCode)).collect(Collectors.toList()); + } + if(CollectionUtils.isEmpty(adds)){ + //工厂parentId + /*String parentId = sapBomMapper.getParentId(adds.get(0).getBukrs()); + adds.stream().forEach(e->{ + e.setParentId(parentId); + });*/ + int n = sapBomMapper.addSupplierBatchs(adds); + System.out.println("供应商新增成功条数:"+ n); + } + + } + + /** + * 客户 + * @param dtos + */ + @Override + public void syncCustom(List dtos) { + //sap返回的客户编码 + List codes = dtos.stream().map(SapCustom::getKunnr).collect(Collectors.toList()); + //sap返回的客户编码-本地已存在 + List exsitCodes = sapBomMapper.getExsitCodes(codes); + //sap返回的客户编码-本地不存在// 差集 (list2 - list1) + List noExsitCodes = codes.stream().filter(item -> !exsitCodes.contains(item)).collect(Collectors.toList()); + + List updates = new ArrayList<>(); + for(String exsitCode:exsitCodes){ + updates = dtos.stream().filter(dto -> dto.getKunnr().equals(exsitCode)).collect(Collectors.toList()); + } + if(CollectionUtils.isEmpty(updates)){ + int m = sapBomMapper.updateCustomBatchs(updates); + System.out.println("客户更新成功条数:"+m); + } + List adds = new ArrayList<>(); + for(String noExsitCode:noExsitCodes){ + adds = dtos.stream().filter(dto -> dto.getKunnr().equals(noExsitCode)).collect(Collectors.toList()); + } + if(CollectionUtils.isEmpty(adds)){ + //工厂parentId + /*String parentId = sapBomMapper.getParentId(adds.get(0).getBukrs()); + adds.stream().forEach(e->{ + e.setParentId(parentId); + });*/ + int n = sapBomMapper.addCustomBatchs(adds); + System.out.println("客户新增成功条数:"+ n); + } + } } diff --git a/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml index 8298c7e6..2eae9ca2 100644 --- a/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml +++ b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml @@ -257,4 +257,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{factoryCode} + + + + + update base_supplier + set zh_desc = #{item.name1} + where + supplier_code = #{item.bukrs} + + + + + insert into base_supplier + (supplier_code,zh_desc,contact_phone,address, + create_by, + create_time, + update_time) + VALUES + + (#{item.bukrs},#{item.name1},#{item.telf1},#{item.stars} + 'job', + #{item.erdat}, + #{item.erdat}) + + + + + + update sys_customer + set client_name = #{item.name1} + where + client_code = #{item.bukrs} + + + + + insert into sys_customer + (client_code,client_name,contact1_tel,address, + create_by, + create_time, + update_time) + VALUES + + (#{item.bukrs},#{item.name1},#{item.telf1},#{item.stars} + 'job', + #{item.erdat}, + #{item.erdat}) + +