diff --git a/ABAP_AS_WITH_POOL.jcoDestination b/ABAP_AS_WITH_POOL.jcoDestination index f7184e0a..40ff1c7b 100644 --- a/ABAP_AS_WITH_POOL.jcoDestination +++ b/ABAP_AS_WITH_POOL.jcoDestination @@ -1,11 +1,11 @@ -#for tests only ! -#Tue Jul 25 15:29:49 CST 2023 +#for test only! +#Fri Aug 18 13:40:14 CST 2023 jco.destination.pool_capacity=true jco.client.lang=zh jco.client.ashost=192.168.0.53 jco.client.saprouter= jco.client.user=MES -jco.client.sysnr=0 +jco.client.sysnr=00 jco.destination.peak_limit=20 -jco.client.passwd=f.6zg4)u7K,V?%$f3X1@sDv,o,cE^tQDiv#oPB+PX*24w(Z. +jco.client.passwd=toHkAx_@$mlAJVaiawLWK@)+b2GdTu6V{jYXBRlK{N:X_o:- jco.client.client=800 diff --git a/dev_jco_rfc.trc b/dev_jco_rfc.trc index 0c27d8b0..9731a6f6 100644 --- a/dev_jco_rfc.trc +++ b/dev_jco_rfc.trc @@ -94,3 +94,21 @@ COUNTER 4 error group: 102 key: RFC_ERROR_COMMUNICATION + +**** Error file opened at 20230816 113444 China Standard Time Rel. 3.0.17 (2017-07-17) [721.913] +Error: >Wed Aug 16 11:34:44,064< >RfcGetException rc (7) message: Invalid value in OPTION field of value table for IN itab operator. operator. +Wed Aug 16 17:42:53,538< >RfcGetException rc (7) message: Invalid value in OPTION field of value table for IN itab operator. operator. +Wed Aug 16 17:44:47,079< >RfcGetException rc (7) message: Invalid value in OPTION field of value table for IN itab operator. operator. +> shopOrderSync(SapProOrder sapProOrder); + @PostMapping("/bomSync") + public R bomSync(); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index bb72fd80..54c96f81 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -19,6 +19,11 @@ public class RemoteSapFallbackFactory implements FallbackFactory> shopOrderSync(SapProOrder sapProOrder) { return R.fail("SAP服务获取SAP订单失败:" + throwable.getMessage()); } + + @Override + public R bomSync() { + return null; + } }; } } diff --git a/op-auth/src/main/resources/bootstrap.yml b/op-auth/src/main/resources/bootstrap.yml index eeac18fa..300cb95e 100644 --- a/op-auth/src/main/resources/bootstrap.yml +++ b/op-auth/src/main/resources/bootstrap.yml @@ -17,12 +17,12 @@ spring: # 服务注册地址 #--spring.cloud.nacos.discovery.namespace=ywl --spring.cloud.nacos.config.namespace=ywl namespace: lanju-op - group: chj + group: ywl server-addr: 140.249.53.142:8848 config: #命名空间 namespace: lanju-op - group: chj + group: ywl # 配置中心地址 server-addr: 140.249.53.142:8848 # 配置文件格式 diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java b/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java index 980ab4e0..8313b433 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java @@ -2,7 +2,7 @@ package com.op.common.core.constant; /** * 通用常量信息 - * + * * @author OP */ public class Constants { @@ -126,4 +126,13 @@ public class Constants { */ public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", "org.springframework", "org.apache", "com.op.common.core.utils.file" }; + + /** + * SAP请求参数字符 + */ + public static final String SIGN="SIGN"; + + public static final String OPTION="OPTION"; + + public static final String LOW="LOW"; } diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/utils/DateUtils.java b/op-common/op-common-core/src/main/java/com/op/common/core/utils/DateUtils.java index 719c6df1..8c0eb5c5 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/utils/DateUtils.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/utils/DateUtils.java @@ -23,6 +23,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static String YYYY_MM_DD = "yyyy-MM-dd"; + public static String YYYYMMDD="yyMMdd"; + public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; public static String YYYYMMDDHHMMSSsss = "yyyyMMddHHmmssSSS"; diff --git a/op-gateway/src/main/resources/bootstrap.yml b/op-gateway/src/main/resources/bootstrap.yml index 556032ef..fe99599f 100644 --- a/op-gateway/src/main/resources/bootstrap.yml +++ b/op-gateway/src/main/resources/bootstrap.yml @@ -17,13 +17,13 @@ spring: # password: sfnacos2023 # namespace: lanju-op namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: #命名空间 namespace: lanju-op - group: chj + group: ywl # 配置中心地址 server-addr: 140.249.53.142:8848 # 配置文件格式 diff --git a/op-modules/op-device/op-modules-device.iml b/op-modules/op-device/op-modules-device.iml new file mode 100644 index 00000000..0cd655a4 --- /dev/null +++ b/op-modules/op-device/op-modules-device.iml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-device/src/main/resources/bootstrap.yml b/op-modules/op-device/src/main/resources/bootstrap.yml index e2e47942..0234c4d5 100644 --- a/op-modules/op-device/src/main/resources/bootstrap.yml +++ b/op-modules/op-device/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-energy/op-modules-engery.iml b/op-modules/op-energy/op-modules-engery.iml new file mode 100644 index 00000000..0cd655a4 --- /dev/null +++ b/op-modules/op-energy/op-modules-engery.iml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-energy/src/main/resources/bootstrap.yml b/op-modules/op-energy/src/main/resources/bootstrap.yml index fc3639df..8188ee1a 100644 --- a/op-modules/op-energy/src/main/resources/bootstrap.yml +++ b/op-modules/op-energy/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-file/src/main/resources/bootstrap.yml b/op-modules/op-file/src/main/resources/bootstrap.yml index a8455d58..0c2780bc 100644 --- a/op-modules/op-file/src/main/resources/bootstrap.yml +++ b/op-modules/op-file/src/main/resources/bootstrap.yml @@ -15,13 +15,13 @@ spring: discovery: # 服务注册地址 namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: # 配置中心地址 namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 # 配置文件格式 diff --git a/op-modules/op-gen/src/main/resources/bootstrap.yml b/op-modules/op-gen/src/main/resources/bootstrap.yml index 655fd0c1..952af23e 100644 --- a/op-modules/op-gen/src/main/resources/bootstrap.yml +++ b/op-modules/op-gen/src/main/resources/bootstrap.yml @@ -14,13 +14,13 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: #命名空间 namespace: lanju-op - group: chj + group: ywl # 配置中心地址 server-addr: 140.249.53.142:8848 # 配置文件格式 diff --git a/op-modules/op-job/op-modules-job.iml b/op-modules/op-job/op-modules-job.iml new file mode 100644 index 00000000..bace127c --- /dev/null +++ b/op-modules/op-job/op-modules-job.iml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-job/pom.xml b/op-modules/op-job/pom.xml index 0b324612..de4012ba 100644 --- a/op-modules/op-job/pom.xml +++ b/op-modules/op-job/pom.xml @@ -81,11 +81,11 @@ com.op op-common-swagger - - com.abc.sap - sapjco3 - 1.0.0 - + + + + + diff --git a/op-modules/op-job/src/main/java/com/op/job/config/SapConnConfig.java b/op-modules/op-job/src/main/java/com/op/job/config/SapConnConfig.java deleted file mode 100644 index 963425ef..00000000 --- a/op-modules/op-job/src/main/java/com/op/job/config/SapConnConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.op.job.config; - -import com.op.common.core.utils.uuid.IdUtils; -import com.op.job.domain.SapConn; -import com.op.job.util.SAPConnUtils; -import com.op.system.api.RemoteMesService; -import com.op.system.api.model.SapProOrder; -import com.sap.conn.jco.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; - - -public class SapConnConfig { - - -} diff --git a/op-modules/op-job/src/main/java/com/op/job/domain/SapConn.java b/op-modules/op-job/src/main/java/com/op/job/domain/SapConn.java deleted file mode 100644 index aae4935d..00000000 --- a/op-modules/op-job/src/main/java/com/op/job/domain/SapConn.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.op.job.domain; - -public class SapConn { - // SAP服务器 - private String JCO_ASHOST; - // SAP系统编号 - private String JCO_SYSNR; - // SAP集团 - private String JCO_CLIENT; - // SAP用户名 - private String JCO_USER; - // SAP密码 - private String JCO_PASSWD; - // SAP登录语言 - private String JCO_LANG; - // 最大连接数 - private String JCO_POOL_CAPACITY; - // 最大连接线程 - private String JCO_PEAK_LIMIT; - // SAP ROUTER - private String JCO_SAPROUTER; - - public SapConn(String JCO_ASHOST, String JCO_SYSNR, String JCO_CLIENT, String JCO_USER, - String JCO_PASSWD, String JCO_LANG, String JCO_POOL_CAPACITY, String JCO_PEAK_LIMIT, - String JCO_SAPROUTER) { - this.JCO_ASHOST = JCO_ASHOST; - this.JCO_SYSNR = JCO_SYSNR; - this.JCO_CLIENT = JCO_CLIENT; - this.JCO_USER = JCO_USER; - this.JCO_PASSWD = JCO_PASSWD; - this.JCO_LANG = JCO_LANG; - this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY; - this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT; - this.JCO_SAPROUTER = JCO_SAPROUTER; - } - - public SapConn() {} - - public String getJCO_ASHOST() { - return JCO_ASHOST; - } - - public void setJCO_ASHOST(String JCO_ASHOST) { - this.JCO_ASHOST = JCO_ASHOST; - } - - public String getJCO_SYSNR() { - return JCO_SYSNR; - } - - public void setJCO_SYSNR(String JCO_SYSNR) { - this.JCO_SYSNR = JCO_SYSNR; - } - - public String getJCO_CLIENT() { - return JCO_CLIENT; - } - - public void setJCO_CLIENT(String JCO_CLIENT) { - this.JCO_CLIENT = JCO_CLIENT; - } - - public String getJCO_USER() { - return JCO_USER; - } - - public void setJCO_USER(String JCO_USER) { - this.JCO_USER = JCO_USER; - } - - public String getJCO_PASSWD() { - return JCO_PASSWD; - } - - public void setJCO_PASSWD(String JCO_PASSWD) { - this.JCO_PASSWD = JCO_PASSWD; - } - - public String getJCO_LANG() { - return JCO_LANG; - } - - public void setJCO_LANG(String JCO_LANG) { - this.JCO_LANG = JCO_LANG; - } - - public String getJCO_POOL_CAPACITY() { - return JCO_POOL_CAPACITY; - } - - public void setJCO_POOL_CAPACITY(String JCO_POOL_CAPACITY) { - this.JCO_POOL_CAPACITY = JCO_POOL_CAPACITY; - } - - public String getJCO_PEAK_LIMIT() { - return JCO_PEAK_LIMIT; - } - - public void setJCO_PEAK_LIMIT(String JCO_PEAK_LIMIT) { - this.JCO_PEAK_LIMIT = JCO_PEAK_LIMIT; - } - - public String getJCO_SAPROUTER() { - return JCO_SAPROUTER; - } - - public void setJCO_SAPROUTER(String JCO_SAPROUTER) { - this.JCO_SAPROUTER = JCO_SAPROUTER; - } - - @Override - public String toString() { - return "SapConn{" + - "JCO_ASHOST='" + JCO_ASHOST + '\'' + - ", JCO_SYSNR='" + JCO_SYSNR + '\'' + - ", JCO_CLIENT='" + JCO_CLIENT + '\'' + - ", JCO_USER='" + JCO_USER + '\'' + - ", JCO_PASSWD='" + JCO_PASSWD + '\'' + - ", JCO_LANG='" + JCO_LANG + '\'' + - ", JCO_POOL_CAPACITY='" + JCO_POOL_CAPACITY + '\'' + - ", JCO_PEAK_LIMIT='" + JCO_PEAK_LIMIT + '\'' + - ", JCO_SAPROUTER='" + JCO_SAPROUTER + '\'' + - '}'; - } -} diff --git a/op-modules/op-job/src/main/java/com/op/job/util/SAPConnUtils.java b/op-modules/op-job/src/main/java/com/op/job/util/SAPConnUtils.java deleted file mode 100644 index 8fbcd949..00000000 --- a/op-modules/op-job/src/main/java/com/op/job/util/SAPConnUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.op.job.util; - - - -import com.op.job.domain.SapConn; -import com.sap.conn.jco.JCoDestination; -import com.sap.conn.jco.JCoDestinationManager; -import com.sap.conn.jco.JCoException; -import com.sap.conn.jco.ext.DestinationDataProvider; - -import java.io.File; -import java.io.FileOutputStream; -import java.util.Properties; - -public class SAPConnUtils { - private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL"; - - /** - * 创建SAP接口属性文件。 - * @param name ABAP管道名称 - * @param suffix 属性文件后缀 - * @param properties 属性文件内容 - */ - private static void createDataFile(String name, String suffix, Properties properties){ - File cfg = new File(name+"."+suffix); - if(cfg.exists()){ - cfg.deleteOnExit(); - } - try{ - FileOutputStream fos = new FileOutputStream(cfg, false); - properties.store(fos, "for tests only !"); - fos.close(); - }catch (Exception e){ - System.out.println("Create Data file fault, error msg: " + e.toString()); - throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e); - } - } - - /** - * 初始化SAP连接 - */ - private static void initProperties(SapConn sapConn) { - Properties connectProperties = new Properties(); - // SAP服务器 - connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, sapConn.getJCO_ASHOST()); - // SAP系统编号 - connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, sapConn.getJCO_SYSNR()); - // SAP集团 - connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, sapConn.getJCO_CLIENT()); - // SAP用户名 - connectProperties.setProperty(DestinationDataProvider.JCO_USER, sapConn.getJCO_USER()); - // SAP密码 - connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, sapConn.getJCO_PASSWD()); - // SAP登录语言 - connectProperties.setProperty(DestinationDataProvider.JCO_LANG, sapConn.getJCO_LANG()); - // 最大连接数 - connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, sapConn.getJCO_POOL_CAPACITY()); - // 最大连接线程 - connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, sapConn.getJCO_PEAK_LIMIT()); - // SAP ROUTER - connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER, sapConn.getJCO_SAPROUTER()); - - createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties); - } - - /** - * 获取SAP连接 - * @return SAP连接对象 - */ - public static JCoDestination connect(SapConn sapConn){ - System.out.println("正在连接至SAP..."); - JCoDestination destination = null; - initProperties(sapConn); - try { - destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED); - destination.ping(); - System.out.println("已成功建立sap的连接"); - } catch (JCoException e) { - System.out.println("Connect SAP fault, error msg: " + e.toString()); - } - return destination; - } - -} diff --git a/op-modules/op-job/src/main/resources/bootstrap.yml b/op-modules/op-job/src/main/resources/bootstrap.yml index c7d74cfa..52a01cdd 100644 --- a/op-modules/op-job/src/main/resources/bootstrap.yml +++ b/op-modules/op-job/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-mes/op-modules-mes.iml b/op-modules/op-mes/op-modules-mes.iml new file mode 100644 index 00000000..84a484f1 --- /dev/null +++ b/op-modules/op-mes/op-modules-mes.iml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java index 0ce8504e..a375dae4 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java @@ -21,7 +21,7 @@ import org.springframework.util.ObjectUtils; /** * 报废Service业务层处理 - * + * * @author Open Platform * @date 2023-08-01 */ @@ -34,7 +34,7 @@ public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService { /** * 查询报废 - * + * * @param id 报废主键 * @return 报废 */ @@ -49,7 +49,7 @@ public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService { /** * 查询报废列表 - * + * * @param proEmbryoScrap 报废 * @return 报废 */ @@ -61,7 +61,7 @@ public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService { /** * 新增报废 - * + * * @param proEmbryoScrap 报废 * @return 结果 */ @@ -113,7 +113,7 @@ public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService { /** * 修改报废 - * + * * @param proEmbryoScrap 报废 * @return 结果 */ @@ -139,7 +139,7 @@ public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService { /** * 批量删除报废 - * + * * @param ids 需要删除的报废主键 * @return 结果 */ @@ -166,7 +166,7 @@ public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService { /** * 删除报废信息 - * + * * @param id 报废主键 * @return 结果 */ diff --git a/op-modules/op-mes/src/main/resources/bootstrap.yml b/op-modules/op-mes/src/main/resources/bootstrap.yml index 40cd81a8..222424bd 100644 --- a/op-modules/op-mes/src/main/resources/bootstrap.yml +++ b/op-modules/op-mes/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-plan/op-modules-plan.iml b/op-modules/op-plan/op-modules-plan.iml new file mode 100644 index 00000000..761bce12 --- /dev/null +++ b/op-modules/op-plan/op-modules-plan.iml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-plan/pom.xml b/op-modules/op-plan/pom.xml index 36073e12..8cc61a0b 100644 --- a/op-modules/op-plan/pom.xml +++ b/op-modules/op-plan/pom.xml @@ -82,6 +82,12 @@ com.op op-common-swagger + + org.springframework + spring-web + 5.3.24 + compile + diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index 35091e43..7f8331a7 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -4,7 +4,9 @@ import java.util.*; import java.util.stream.Collectors; import com.alibaba.csp.sentinel.util.StringUtil; +import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.domain.R; import com.op.common.core.exception.CheckedException; @@ -208,6 +210,7 @@ public class ProOrderServiceImpl implements IProOrderService { @Override @DS("#header.poolName") public AjaxResult getOrderList(String id) { + // 通过母工单id查询母订单详情 ProOrder proOrder = proOrderMapper.selectProOrderById(id); // 递归查询子订单 diff --git a/op-modules/op-plan/src/main/resources/bootstrap.yml b/op-modules/op-plan/src/main/resources/bootstrap.yml index 9cb5432a..dd923a57 100644 --- a/op-modules/op-plan/src/main/resources/bootstrap.yml +++ b/op-modules/op-plan/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-quality/op-modules-quality.iml b/op-modules/op-quality/op-modules-quality.iml index 87189627..0cd655a4 100644 --- a/op-modules/op-quality/op-modules-quality.iml +++ b/op-modules/op-quality/op-modules-quality.iml @@ -1,14 +1,14 @@ + + + - - - diff --git a/op-modules/op-quality/src/main/resources/bootstrap.yml b/op-modules/op-quality/src/main/resources/bootstrap.yml index 61ed7291..ee092600 100644 --- a/op-modules/op-quality/src/main/resources/bootstrap.yml +++ b/op-modules/op-quality/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: zxl + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: zxl + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-sap/dev_jco_rfc.trc b/op-modules/op-sap/dev_jco_rfc.trc new file mode 100644 index 00000000..c14b6b2a --- /dev/null +++ b/op-modules/op-sap/dev_jco_rfc.trc @@ -0,0 +1,18 @@ + +**** Error file opened at 20230816 110101 China Standard Time Rel. 3.0.17 (2017-07-17) [721.913] +Error: >Wed Aug 16 11:01:01,227< >RfcGetException rc (7) message: Invalid value in OPTION field of value table for IN itab operator. operator. +Wed Aug 16 11:07:43,605< >RfcGetException rc (7) message: Invalid value in OPTION field of value table for IN itab operator. operator. +Wed Aug 16 11:19:35,981< >RfcGetException rc (7) message: Invalid value in OPTION field of value table for IN itab operator. operator. + - @@ -84,8 +83,6 @@ - - @@ -102,10 +99,37 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -151,7 +175,6 @@ - @@ -182,7 +205,6 @@ - @@ -190,7 +212,14 @@ + + + + + + + diff --git a/op-modules/op-sap/pom.xml b/op-modules/op-sap/pom.xml index 4fa19988..4823680f 100644 --- a/op-modules/op-sap/pom.xml +++ b/op-modules/op-sap/pom.xml @@ -9,15 +9,15 @@ 4.0.0 - op-modules-sap + op-modules-plan - op-modules-sap系统模块 + op-modules-plan系统模块 - + com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery @@ -29,13 +29,13 @@ spring-cloud-starter-alibaba-nacos-config - + com.alibaba.cloud spring-cloud-starter-alibaba-sentinel - + org.springframework.boot spring-boot-starter-actuator @@ -53,7 +53,12 @@ mysql mysql-connector-java - + + + com.microsoft.sqlserver + mssql-jdbc + 6.1.0.jre8 + com.op @@ -77,13 +82,22 @@ com.op op-common-swagger - - + + org.springframework + spring-web + 5.3.24 + compile + + com.abc.sap sapjco3 1.0.0 + + junit + junit + diff --git a/op-modules/op-sap/src/main/java/com/op/sap/config/DestinationDataProviderImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/config/DestinationDataProviderImpl.java new file mode 100644 index 00000000..702a2a91 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/config/DestinationDataProviderImpl.java @@ -0,0 +1,49 @@ +package com.op.sap.config; + +import com.sap.conn.jco.ext.DataProviderException; +import com.sap.conn.jco.ext.DestinationDataEventListener; +import com.sap.conn.jco.ext.DestinationDataProvider; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +public class DestinationDataProviderImpl implements DestinationDataProvider { + /** + * DestinationDataProvider is of type interface. + * We define DestinationDataProviderImpl class to implements this interface + * so that we can define the SAP connection parameters more flexibly, + * not just in xxx.jcodestionation file. + * + * The point is that we override getDestinationProperties() method. + * Afterwards, instance of DestinationDataProvider should be registered + * using Environment.registerDestinationDataProvider() method to take effect + */ + + private Map provider = new HashMap(); + @Override + public Properties getDestinationProperties(String destName) throws DataProviderException { + if (destName == null){ + throw new NullPointerException("Destination name is empty."); + } + if (provider.size() == 0){ + throw new IllegalStateException("Data provider is empty."); + } + + return (Properties) provider.get(destName); + } + + @Override + public boolean supportsEvents() { + return false; + } + + @Override + public void setDestinationDataEventListener(DestinationDataEventListener destinationDataEventListener) { + throw new UnsupportedOperationException(); + } + + public void addDestinationProps(String destName, Properties props){ + provider.put(destName, props); + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/config/DestinationManager.java b/op-modules/op-sap/src/main/java/com/op/sap/config/DestinationManager.java new file mode 100644 index 00000000..c4232344 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/config/DestinationManager.java @@ -0,0 +1,73 @@ +package com.op.sap.config; + +import com.sap.conn.jco.JCoDestination; +import com.sap.conn.jco.JCoDestinationManager; +import com.sap.conn.jco.JCoException; +import com.sap.conn.jco.ext.DestinationDataProvider; +import com.sap.conn.jco.ext.Environment; +import org.springframework.beans.factory.annotation.Value; + +import java.util.Properties; + +public class DestinationManager { + + @Value("${sap.ashost}") + public static String ashost; + + @Value("${sap.sysnr}") + public static String sysnr; + + @Value("${sap.client}") + public static String client; + + @Value("${sap.user}") + public static String user; + + @Value("${sap.passwd}") + public static String passwd; + + @Value("${sap.lang}") + public static String lang; + + @Value("${sap.pool_capacity}") + public static String pool_capacity; + + @Value("${sap.peak_limit}") + public static String peak_limit; + + @Value("${sap.saprouter}") + public static String saprouter; + + private static Properties setProperties(String destName) + { + // SAP connection parameters and other properties + Properties props = new Properties(); + + if (destName == "SAP_AS") { + props.setProperty(DestinationDataProvider.JCO_ASHOST, ashost); + props.setProperty(DestinationDataProvider.JCO_SYSNR, sysnr); + props.setProperty(DestinationDataProvider.JCO_USER, user); + props.setProperty(DestinationDataProvider.JCO_PASSWD, passwd); + props.setProperty(DestinationDataProvider.JCO_CLIENT, client); + props.setProperty(DestinationDataProvider.JCO_LANG, lang); + props.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,peak_limit); + props.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY,pool_capacity); + props.setProperty(DestinationDataProvider.JCO_SAPROUTER,saprouter); + + } + + return props; + } + + public static JCoDestination getDestination (String destName) throws JCoException { + Properties props = setProperties(destName); + + DestinationDataProviderImpl providerImpl = new DestinationDataProviderImpl(); + providerImpl.addDestinationProps(destName, props); + + Environment.registerDestinationDataProvider(providerImpl); + + JCoDestination dest = JCoDestinationManager.getDestination(destName); + return dest; + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/config/DynamicDatasource.java b/op-modules/op-sap/src/main/java/com/op/sap/config/DynamicDatasource.java new file mode 100644 index 00000000..a7129e7b --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/config/DynamicDatasource.java @@ -0,0 +1,51 @@ +package com.op.sap.config; + +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; +import com.op.common.core.domain.R; +import com.op.common.datasource.creator.DynamicDatasourceCreator; +import com.op.system.api.RemoteUserService; +import com.op.system.api.domain.SysUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 初始化动态数据源 + * + * @ClassName: DynamicDatasource + * @Description: TODO + * @author shichangzhou + * @date 2023年4月19日 下午1:01:30 + */ +@Component +public class DynamicDatasource { + + @Resource + private DynamicDatasourceCreator dynamicDatasourceCreator; + @Autowired + private RemoteUserService remoteUserService; + + @PostConstruct + public void init() { + // 加载sf-cloud库的sys_datasource + SysUser sysUser = new SysUser(); + sysUser.setUserId(1L); + R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + for (Map dateSource : dateSources) { + DataSourceProperty sdp = new DataSourceProperty(); + sdp.setUrl(dateSource.get("url")); + sdp.setUsername(dateSource.get("userName")); + sdp.setPassword(dateSource.get("password")); + sdp.setDriverClassName(dateSource.get("driveClassName")); + sdp.setPoolName(dateSource.get("poolName"));// 这是数据源的key + sdp.setLazy(false); + dynamicDatasourceCreator.createDynamicDataSource(sdp); + } + + } +} 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 9b8f4b09..d671527b 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 @@ -1,9 +1,15 @@ package com.op.sap.controller; -import com.op.common.core.domain.R; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.log.annotation.Log; import com.op.common.log.enums.BusinessType; -import com.op.sap.service.SapService; +import com.op.sap.service.SapBomService; + +import com.op.sap.domain.SapBom; +import com.op.sap.service.SapMaterialPreparationService; +import com.op.sap.service.SapOrderService; import com.op.system.api.model.SapProOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -12,32 +18,58 @@ import java.util.List; @RestController @RequestMapping("/sap") -public class SapController { +public class SapController extends BaseController { + + @Autowired + private SapOrderService sapOrderService; + + @Autowired + private SapBomService sapBomService; @Autowired - private SapService sapService; + private SapMaterialPreparationService sapMaterialPreparationService; + /** - * 连接SAP系统获取系统新增加订单 + * 订单同步接口 * @return */ @PostMapping("/shopOrderSync") @Log(title = "同步SAP订单", businessType = BusinessType.SAP) - public List shopOrderSync(@RequestBody SapProOrder sapProOrder){ - return sapService.shopOrderSync(sapProOrder); + public AjaxResult shopOrderSync(@RequestBody SapProOrder sapProOrder){ + return sapOrderService.shopOrderSync(sapProOrder); } /** * 物料同步接口 * @return */ - @PostMapping("saveItem") - public R saveItem(){ - return sapService.sapItem(); +// @PostMapping("/itemSync") +// public List itemSync(){ +// return sapService.itemSync(); +// } + + /** + * 物料清单同步接口 + * @return + */ + @PostMapping("/bomSync") + @Log(title = "同步SAP物料清单", businessType = BusinessType.SAP) + public AjaxResult saveBom(){ + return sapBomService.bomSync(); } - @PostMapping("saveBom") - public R saveBom(){ - return sapService.sapBom(); + /** + * 生产订单备料单接口 + * @param shopOrder + * @return + */ + + @PostMapping("/materialPreparation") + @Log(title = "生产订单备料单接口", businessType = BusinessType.SAP) + public AjaxResult materialPreparation(@RequestParam("shopOrder") String shopOrder){ + return sapMaterialPreparationService.MaterialPreparation(shopOrder); } + + } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/SapBom.java b/op-modules/op-sap/src/main/java/com/op/sap/domain/SapBom.java new file mode 100644 index 00000000..e3a093ec --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/domain/SapBom.java @@ -0,0 +1,374 @@ +package com.op.sap.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import com.op.common.core.web.domain.TreeEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import org.apache.poi.hpsf.Decimal; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +public class SapBom extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 工厂 */ + @Excel(name = "工厂") + private String factoryCode; + + /** 生产版本 */ + @Excel(name = "生产版本") + private String productionVersion; + + /** BOM单号 */ + @Excel(name = "BOM单号") + private String bomCode; + + /** 可选BOM */ + @Excel(name = "可选BOM") + private String optionalBom; + + /** 可选BOM文本 */ + @Excel(name = "可选BOM文本") + private String optionalBomText; + + /** 生产版本有效期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "生产版本有效期", width = 30, dateFormat = "yyyy-MM-dd") + private Date pvvd; + + /** 生产版本截止日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "生产版本截止日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date pved; + + /** BOM计算数量 */ + @Excel(name = "BOM计算数量") + private BigDecimal bomCalculateNumber; + + /** BOM计算单位 */ + @Excel(name = "BOM计算单位") + private String bomCalculateUnit; + + /** BOM基本数量 */ + @Excel(name = "BOM基本数量") + private BigDecimal bomBaseNumber; + + /** BOM基本单位 */ + @Excel(name = "BOM基本单位") + private String bomBaseUnit; + + /** 组件数量单位 */ + @Excel(name = "组件数量单位") + private String componentUnit; + + /** 组件采购标志 */ + @Excel(name = "组件采购标志") + private String componentProFlag; + + /** 物料供应标识 */ + @Excel(name = "物料供应标识") + private String msi; + + /** 成本核算标识相关 */ + @Excel(name = "成本核算标识相关") + private String sanka; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private String attr3; + + /** 是否在用 */ + @Excel(name = "是否在用") + private String currentVersion; + + + + + + /** 物料编码 */ + @Excel(name = "物料编码") + private String productCode; + + /** 组件上层物料编码 */ + @Excel(name = "组件上层物料编码") + private String cumc; + + /** 组件编码 */ + @Excel(name = "组件编码") + private String component; + + /** BOM层次 */ + @Excel(name = "BOM层次") + private String bomHierarchy; + + /** 项目编号 */ + @Excel(name = "项目编号") + private String projectNo; + + /** 标准用量 */ + @Excel(name = "标准用量") + private Long standardDosage; + + /** 损耗率 */ + @Excel(name = "损耗率") + private Long lossRate; + + /** 损耗额 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "损耗额", width = 30, dateFormat = "yyyy-MM-dd") + private BigDecimal lossAmount; + + /** 含损耗用量 */ + @Excel(name = "含损耗用量") + private BigDecimal cilosses; + + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getCumc() { + return cumc; + } + + public void setCumc(String cumc) { + this.cumc = cumc; + } + + public String getComponent() { + return component; + } + + public void setComponent(String component) { + this.component = component; + } + + public String getBomHierarchy() { + return bomHierarchy; + } + + public void setBomHierarchy(String bomHierarchy) { + this.bomHierarchy = bomHierarchy; + } + + public String getProjectNo() { + return projectNo; + } + + public void setProjectNo(String projectNo) { + this.projectNo = projectNo; + } + + public Long getStandardDosage() { + return standardDosage; + } + + public void setStandardDosage(Long standardDosage) { + this.standardDosage = standardDosage; + } + + public Long getLossRate() { + return lossRate; + } + + public void setLossRate(Long lossRate) { + this.lossRate = lossRate; + } + + public BigDecimal getLossAmount() { + return lossAmount; + } + + public void setLossAmount(BigDecimal lossAmount) { + this.lossAmount = lossAmount; + } + + public BigDecimal getCilosses() { + return cilosses; + } + + public void setCilosses(BigDecimal cilosses) { + this.cilosses = cilosses; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + public void setProductionVersion(String productionVersion) { + this.productionVersion = productionVersion; + } + + public String getProductionVersion() { + return productionVersion; + } + public void setBomCode(String bomCode) { + this.bomCode = bomCode; + } + + public String getBomCode() { + return bomCode; + } + public void setOptionalBom(String optionalBom) { + this.optionalBom = optionalBom; + } + + public String getOptionalBom() { + return optionalBom; + } + public void setOptionalBomText(String optionalBomText) { + this.optionalBomText = optionalBomText; + } + + public String getOptionalBomText() { + return optionalBomText; + } + public void setPvvd(Date pvvd) { + this.pvvd = pvvd; + } + + public Date getPvvd() { + return pvvd; + } + public void setPved(Date pved) { + this.pved = pved; + } + + public Date getPved() { + return pved; + } + public void setBomCalculateNumber(BigDecimal bomCalculateNumber) { + this.bomCalculateNumber = bomCalculateNumber; + } + + public BigDecimal getBomCalculateNumber() { + return bomCalculateNumber; + } + public void setBomCalculateUnit(String bomCalculateUnit) { + this.bomCalculateUnit = bomCalculateUnit; + } + + public String getBomCalculateUnit() { + return bomCalculateUnit; + } + public void setBomBaseNumber(BigDecimal bomBaseNumber) { + this.bomBaseNumber = bomBaseNumber; + } + + public BigDecimal getBomBaseNumber() { + return bomBaseNumber; + } + public void setBomBaseUnit(String bomBaseUnit) { + this.bomBaseUnit = bomBaseUnit; + } + + public String getBomBaseUnit() { + return bomBaseUnit; + } + public void setComponentUnit(String componentUnit) { + this.componentUnit = componentUnit; + } + + public String getComponentUnit() { + return componentUnit; + } + public void setComponentProFlag(String componentProFlag) { + this.componentProFlag = componentProFlag; + } + + public String getComponentProFlag() { + return componentProFlag; + } + public void setMsi(String msi) { + this.msi = msi; + } + + public String getMsi() { + return msi; + } + + public void setSanka(String sanka) { + this.sanka = sanka; + } + + public String getSanka() { + return sanka; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setCurrentVersion(String currentVersion) { + this.currentVersion = currentVersion; + } + + public String getCurrentVersion() { + return currentVersion; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("factoryCode", getFactoryCode()) + .append("productionVersion", getProductionVersion()) + .append("bomCode", getBomCode()) + .append("optionalBom", getOptionalBom()) + .append("optionalBomText", getOptionalBomText()) + .append("pvvd", getPvvd()) + .append("pved", getPved()) + .append("bomCalculateNumber", getBomCalculateNumber()) + .append("bomCalculateUnit", getBomCalculateUnit()) + .append("bomBaseNumber", getBomBaseNumber()) + .append("bomBaseUnit", getBomBaseUnit()) + .append("componentUnit", getComponentUnit()) + .append("componentProFlag", getComponentProFlag()) + .append("msi", getMsi()) + .append("sanka", getSanka()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("currentVersion", getCurrentVersion()) + .toString(); + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/SapBomComponent.java b/op-modules/op-sap/src/main/java/com/op/sap/domain/SapBomComponent.java new file mode 100644 index 00000000..5fb8d2d4 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/domain/SapBomComponent.java @@ -0,0 +1,252 @@ +package com.op.sap.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +public class SapBomComponent extends BaseEntity { + /** 主键 */ + private Long id; + + /** BOM单号 */ + @Excel(name = "BOM单号") + private String bomCode; + + /** 工厂/站点 */ + @Excel(name = "工厂/站点") + private String site; + + /** 物料编码 */ + @Excel(name = "物料编码") + private String productCode; + + /** 组件上层物料编码 */ + @Excel(name = "组件上层物料编码") + private String cumc; + + /** 组件编码 */ + @Excel(name = "组件编码") + private String component; + + /** BOM层次 */ + @Excel(name = "BOM层次") + private String bomHierarchy; + + /** 项目编号 */ + @Excel(name = "项目编号") + private String projectNo; + + /** 标准用量 */ + @Excel(name = "标准用量") + private BigDecimal standardDosage; + + /** 损耗率 */ + @Excel(name = "损耗率") + private BigDecimal lossRate; + + /** 损耗额 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "损耗额", width = 30, dateFormat = "yyyy-MM-dd") + private BigDecimal lossAmount; + + /** 含损耗用量 */ + @Excel(name = "含损耗用量") + private BigDecimal cilosses; + + /** 组件数量单位 */ + @Excel(name = "组件数量单位") + private String componentUnit; + + /** 组件采购标志 */ + @Excel(name = "组件采购标志") + private String componentProFlag; + + /** 物料供应标识 */ + @Excel(name = "物料供应标识") + private String msi; + + /** 成本核算标识相关 */ + @Excel(name = "成本核算标识相关") + private String sanka; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private String attr3; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + public void setBomCode(String bomCode) { + this.bomCode = bomCode; + } + + public String getBomCode() { + return bomCode; + } + public void setSite(String site) { + this.site = site; + } + + public String getSite() { + return site; + } + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductCode() { + return productCode; + } + public void setCumc(String cumc) { + this.cumc = cumc; + } + + public String getCumc() { + return cumc; + } + public void setComponent(String component) { + this.component = component; + } + + public String getComponent() { + return component; + } + public void setBomHierarchy(String bomHierarchy) { + this.bomHierarchy = bomHierarchy; + } + + public String getBomHierarchy() { + return bomHierarchy; + } + public void setProjectNo(String projectNo) { + this.projectNo = projectNo; + } + + public String getProjectNo() { + return projectNo; + } + public void setStandardDosage(BigDecimal standardDosage) { + this.standardDosage = standardDosage; + } + + public BigDecimal getStandardDosage() { + return standardDosage; + } + public void setLossRate(BigDecimal lossRate) { + this.lossRate = lossRate; + } + + public BigDecimal getLossRate() { + return lossRate; + } + public void setLossAmount(BigDecimal lossAmount) { + this.lossAmount = lossAmount; + } + + public BigDecimal getLossAmount() { + return lossAmount; + } + public void setCilosses(BigDecimal cilosses) { + this.cilosses = cilosses; + } + + public BigDecimal getCilosses() { + return cilosses; + } + public void setComponentUnit(String componentUnit) { + this.componentUnit = componentUnit; + } + + public String getComponentUnit() { + return componentUnit; + } + public void setComponentProFlag(String componentProFlag) { + this.componentProFlag = componentProFlag; + } + + public String getComponentProFlag() { + return componentProFlag; + } + public void setMsi(String msi) { + this.msi = msi; + } + + public String getMsi() { + return msi; + } + public void setSanka(String sanka) { + this.sanka = sanka; + } + + public String getSanka() { + return sanka; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("bomCode", getBomCode()) + .append("site", getSite()) + .append("productCode", getProductCode()) + .append("cumc", getCumc()) + .append("component", getComponent()) + .append("bomHierarchy", getBomHierarchy()) + .append("projectNo", getProjectNo()) + .append("standardDosage", getStandardDosage()) + .append("lossRate", getLossRate()) + .append("lossAmount", getLossAmount()) + .append("cilosses", getCilosses()) + .append("componentUnit", getComponentUnit()) + .append("componentProFlag", getComponentProFlag()) + .append("msi", getMsi()) + .append("sanka", getSanka()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/SapMaterialPreparation.java b/op-modules/op-sap/src/main/java/com/op/sap/domain/SapMaterialPreparation.java new file mode 100644 index 00000000..2981cdd7 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/domain/SapMaterialPreparation.java @@ -0,0 +1,125 @@ +package com.op.sap.domain; + + +public class SapMaterialPreparation { + //订单号 + private String AUFNR; + //预留/相关需求的项目编号 + private String RSPOS; + //物料号 + private String MATNR; + //物料描述(短文本) + private String MAKTX; + //工厂 + private String WERKS; + //库存地点 + private String LGORT; + //组件的需求日期 + private String BDTER; + //需求量 + private String BDMNG; + //欠料数量 + private String ZQLSL; + //基本计量单位 + private String MEINS; + //标识:反冲 + private String RGEKZ; + //直接采购标识 + private String DBSKZ; + + public String getAUFNR() { + return AUFNR; + } + + public void setAUFNR(String AUFNR) { + this.AUFNR = AUFNR; + } + + public String getRSPOS() { + return RSPOS; + } + + public void setRSPOS(String RSPOS) { + this.RSPOS = RSPOS; + } + + public String getMATNR() { + return MATNR; + } + + public void setMATNR(String MATNR) { + this.MATNR = MATNR; + } + + public String getMAKTX() { + return MAKTX; + } + + public void setMAKTX(String MAKTX) { + this.MAKTX = MAKTX; + } + + public String getWERKS() { + return WERKS; + } + + public void setWERKS(String WERKS) { + this.WERKS = WERKS; + } + + public String getLGORT() { + return LGORT; + } + + public void setLGORT(String LGORT) { + this.LGORT = LGORT; + } + + public String getBDTER() { + return BDTER; + } + + public void setBDTER(String BDTER) { + this.BDTER = BDTER; + } + + public String getBDMNG() { + return BDMNG; + } + + public void setBDMNG(String BDMNG) { + this.BDMNG = BDMNG; + } + + public String getZQLSL() { + return ZQLSL; + } + + public void setZQLSL(String ZQLSL) { + this.ZQLSL = ZQLSL; + } + + public String getMEINS() { + return MEINS; + } + + public void setMEINS(String MEINS) { + this.MEINS = MEINS; + } + + public String getRGEKZ() { + return RGEKZ; + } + + public void setRGEKZ(String RGEKZ) { + this.RGEKZ = RGEKZ; + } + + public String getDBSKZ() { + return DBSKZ; + } + + public void setDBSKZ(String DBSKZ) { + this.DBSKZ = DBSKZ; + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomComponentMapper.java b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomComponentMapper.java new file mode 100644 index 00000000..c94f41ca --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomComponentMapper.java @@ -0,0 +1,27 @@ +package com.op.sap.mapper; + +import com.op.sap.domain.SapBom; +import com.op.sap.domain.SapBomComponent; + + +import java.util.List; + +/** + * 物料BOM子表Mapper接口 + * + * @author Open Platform + * @date 2023-08-04 + */ +public interface SapBomComponentMapper { + + + /** + * 新增物料BOM子表 + * + * @param sapBomComponent 物料BOM子表 + * @return 结果 + */ + public int insertSapBomComponent(SapBomComponent sapBomComponent); + + +} 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 new file mode 100644 index 00000000..2fef708c --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapBomMapper.java @@ -0,0 +1,19 @@ +package com.op.sap.mapper; + +import com.op.sap.domain.SapBom; +import com.op.sap.domain.SapBomComponent; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SapBomMapper { + + /** + * 新增BOM物料管理 + * + * @param sapBom BOM物料管理 + * @return 结果 + */ + public int insertBaseBom(SapBom sapBom); + + public int insertBasetBomComponent(SapBomComponent sapBomComponent); +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapMaterialPreparationMapper.java b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapMaterialPreparationMapper.java new file mode 100644 index 00000000..4fb3ef2d --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/mapper/SapMaterialPreparationMapper.java @@ -0,0 +1,8 @@ +package com.op.sap.mapper; + +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SapMaterialPreparationMapper { + +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapBomService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapBomService.java new file mode 100644 index 00000000..294e8233 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapBomService.java @@ -0,0 +1,10 @@ +package com.op.sap.service; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.sap.domain.SapBom; + +import java.util.List; + +public interface SapBomService { + public AjaxResult bomSync(); +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapMaterialPreparationService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapMaterialPreparationService.java new file mode 100644 index 00000000..0392f5d5 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapMaterialPreparationService.java @@ -0,0 +1,8 @@ +package com.op.sap.service; + +import com.op.common.core.web.domain.AjaxResult; + +public interface SapMaterialPreparationService { + + AjaxResult MaterialPreparation(String shopOrder); +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java new file mode 100644 index 00000000..aabae1f5 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java @@ -0,0 +1,12 @@ +package com.op.sap.service; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.sap.domain.SapBom; +import com.op.system.api.model.SapProOrder; + +import java.util.List; + +public interface SapOrderService { + + AjaxResult shopOrderSync(SapProOrder sapProOrder); +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapService.java deleted file mode 100644 index 878b4502..00000000 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.op.sap.service; - -import com.op.common.core.domain.R; -import com.op.system.api.model.SapProOrder; - -import java.util.List; - -public interface SapService { - - - - R sapItem(); - - R sapBom(); - - - - List shopOrderSync(SapProOrder sapProOrder); -} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java new file mode 100644 index 00000000..b685cc94 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapBomServiceImpl.java @@ -0,0 +1,169 @@ +package com.op.sap.service.impl; + +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.constant.Constants; +import com.op.common.core.exception.ServiceException; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.web.domain.AjaxResult; +import com.op.sap.domain.SapBom; +import com.op.sap.domain.SapBomComponent; +import com.op.sap.domain.SapConn; +import com.op.sap.mapper.SapBomComponentMapper; +import com.op.sap.mapper.SapBomMapper; +import com.op.sap.service.SapBomService; + +import com.op.sap.util.SAPConnUtils; +import com.op.system.api.model.SapProOrder; +import com.sap.conn.jco.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.TreeSet; +import java.util.stream.Collectors; + +@Service +public class SapBomServiceImpl implements SapBomService { + + @Autowired + private SapBomMapper sapBomMapper; + + @Autowired + private SapBomComponentMapper sapBomComponentMapper; + + @Override + public AjaxResult bomSync() { + + try { + // 获取调用 RFC 函数对象 + //获取连接 + JCoDestination dest = SAPConnUtils.connect(); + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZPPR_MES_BOM"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + // 配置传入参数 +// JCoTable jCoTable = func.getTableParameterList().getTable("S_STLNR"); +// jCoTable.appendRow(); +// jCoTable.setValue(Constants.SIGN, "I"); +// jCoTable.setValue(Constants.OPTION, "EQ"); +// jCoTable.setValue(Constants.LOW, "00012222"); + + JCoTable jCoTables = func.getTableParameterList().getTable("S_MATNR"); + jCoTables.appendRow(); + jCoTables.setValue(Constants.SIGN, "I"); + jCoTables.setValue(Constants.OPTION, "EQ"); + jCoTables.setValue(Constants.LOW, "000000010101000115"); + // 获取调用 RFC 函数对象 + func.execute(dest); + // 获取 内表 - ZMES_PRO + JCoTable maraTable = func.getTableParameterList().getTable("LT_BOM"); + JCoRecordMetaData metaData = maraTable.getRecordMetaData(); + System.out.println("###" + metaData.toString()); + SapBom sapBom = new SapBom(); + SapBomComponent sapBomComponent=new SapBomComponent(); + DynamicDataSourceContextHolder.push("op_xiaolan"); + for (int i = 0; i < maraTable.getNumRows(); i++) { + maraTable.setRow(i); + String STLNR = maraTable.getString("STLNR"); + if (STLNR == null || STLNR.equals("")){ + throw new ServiceException("组件清单码为空"); + } + String MATNR = maraTable.getString("MATNR"); + String MAKTX = maraTable.getString("MAKTX"); + String WERKS = maraTable.getString("WERKS"); + String VERID = maraTable.getString("VERID"); + String STLAL = maraTable.getString("STLAL"); + String ANDAT = maraTable.getString("ANDAT"); + String ANNAM = maraTable.getString("ANNAM"); + String AEDAT = maraTable.getString("AEDAT"); + String AENAM = maraTable.getString("AENAM"); + String ADATU = maraTable.getString("ADATU"); + String BDATU = maraTable.getString("BDATU"); + String LOSGR = maraTable.getString("LOSGR"); + String MEINS = maraTable.getString("MEINS"); + String BMENG = maraTable.getString("BMENG"); + String BMEIN = maraTable.getString("BMEIN"); + String STUFE = maraTable.getString("STUFE"); + String WEGXX = maraTable.getString("WEGXX"); + String OJTXB = maraTable.getString("OJTXB"); + String PMATNR = maraTable.getString("PMATNR"); + String PMENGE = maraTable.getString("PMENGE"); + String PMAKTX = maraTable.getString("PMAKTX"); + // String PMENGE = maraTable.getString("PMENGE"); + String PAUSCH = maraTable.getString("PAUSCH"); + String PXHLCE = maraTable.getString("PXHLCE"); + String PMNGKO = maraTable.getString("PMNGKO"); + String PMEINS = maraTable.getString("PMEINS"); + String PBESKZ = maraTable.getString("PBESKZ"); + String BEIKZ = maraTable.getString("BEIKZ"); + String BEIKZ_NM = maraTable.getString("BEIKZ_NM"); + String SANKA = maraTable.getString("SANKA"); + System.out.println("物料编码:" + MATNR + + " - 物料名称:" + MAKTX + " - 工厂:" + WERKS + + " - 生产版本:" + VERID + " - BOM单号:" + STLNR + + " - 可选BOM:" + STLAL + " - 创建日期:" + ANDAT + " - 创建者:" + ANNAM + + " - 修改日期:" + AEDAT + " - 修改者:" + AENAM + + " - 生产版本有效期:" + ADATU + " - 生产版本截止日期:" + BDATU + " - BOM计算数量:" + LOSGR + + " - BOM计算单位:" + MEINS + + " - BOM基本数量:" + BMENG + " - BOM基本单位:" + BMEIN + " - BOM层次:" + STUFE + " - 项目编号:" + WEGXX + + " - 组件编码:" + PMATNR + " - 组件上层物料编码:" + OJTXB + " - 组件名称:" + PMAKTX + + " - 标准用量:" + PMENGE + " - 损耗率:" + PAUSCH + " - 损耗额:" + PXHLCE + " - 含损耗用量:" + PMNGKO + + " - 组件数量单位:" + PMEINS + " - 组件采购标志:" + PBESKZ + " - 物料供应标识:" + BEIKZ + " - 物料供应标识:" + BEIKZ_NM + + " - 成本核算标识相关:" + SANKA); +// sapBom.setFactoryCode(WERKS); +// sapBom.setProductionVersion(VERID); +// sapBom.setBomCode(STLNR); +// sapBom.setOptionalBom(STLAL); +// sapBom.setPvvd(DateUtils.dateTime("yyyy-MM-dd", ADATU)); +// sapBom.setPved(DateUtils.dateTime("yyyy-MM-dd", BDATU)); +// sapBom.setBomCalculateNumber(new BigDecimal(LOSGR)); +// sapBom.setBomCalculateUnit(MEINS); +// sapBom.setBomBaseNumber(new BigDecimal(BMENG)); +// sapBom.setBomBaseUnit(BMEIN); +// sapBom.setComponentUnit(PMEINS); +// sapBom.setComponentProFlag(PBESKZ); +// sapBom.setCreateBy(ANNAM); +// // sapBom.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT)); +// sapBom.setUpdateBy(AENAM); +// // sapBom.setUpdateTime(DateUtils.dateTime("yyyy-MM-dd", AEDAT)); + sapBomComponent.setBomCode(STLNR); + sapBomComponent.setSite(WERKS); + sapBomComponent.setMsi(BEIKZ); + sapBomComponent.setSanka(SANKA); + sapBomComponent.setProductCode(MATNR); + sapBomComponent.setCumc(OJTXB); + sapBomComponent.setBomHierarchy(STUFE); + sapBomComponent.setProjectNo(WEGXX); + sapBomComponent.setStandardDosage(new BigDecimal(PMENGE)); + sapBomComponent.setLossRate(new BigDecimal(PAUSCH)); + sapBomComponent.setLossAmount(new BigDecimal(PXHLCE)); + sapBomComponent.setCilosses(new BigDecimal(PMNGKO)); + sapBomComponent.setCreateBy(ANNAM); + // sapBomComponent.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ANDAT)); + sapBomComponent.setUpdateBy(AENAM); + // sapBomComponent.setUpdateTime(DateUtils.dateTime("yyyy-MM-dd", AEDAT)); + // sapBomList.add(sapBom); + // sapBomComponentMapper.insertSapBomComponent(sapBomComponent); + } + // inserBaseBom(sapBomList); + return AjaxResult.success(); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + + } + } + + public void inserBaseBom(List sapBomList){ + sapBomList = sapBomList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SapBom::getBomCode))), ArrayList::new)); + for (SapBom sapBom:sapBomList) { + sapBomMapper.insertBaseBom(sapBom); + } + } + +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java new file mode 100644 index 00000000..136aec04 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapMaterialPreparationServiceImpl.java @@ -0,0 +1,95 @@ +package com.op.sap.service.impl; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.sap.domain.SapMaterialPreparation; +import com.op.sap.mapper.SapMaterialPreparationMapper; +import com.op.sap.service.SapMaterialPreparationService; +import com.op.sap.util.SAPConnUtils; +import com.sap.conn.jco.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class SapMaterialPreparationServiceImpl implements SapMaterialPreparationService { + + @Autowired + SapMaterialPreparationMapper sapMaterialPreparationMapper; + + @Override + public AjaxResult MaterialPreparation(String shopOrder) { + // 连接 + + try { + // 获取调用 RFC 函数对象 + //获取连接 + JCoDestination dest = SAPConnUtils.connect(); + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZPPR_MES_MATERIAL_PREPARATION"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + // 配置传入参数 + JCoTable jCoTable = func.getTableParameterList().getTable("S_AUFNR"); + jCoTable.appendRow(); + jCoTable.setValue("SIGN", "I"); + jCoTable.setValue("OPTION", "EQ"); + jCoTable.setValue("LOW", shopOrder); + func.execute(dest);//执行调用函数 + // 获取 内表 - ZMES_PRO + JCoTable maraTable = func.getTableParameterList().getTable("LT_MAPRE"); + JCoRecordMetaData metaData = maraTable.getRecordMetaData(); + System.out.println("###" + metaData.toString()); + + List sapMaterialPreparationList =new ArrayList<>(); + // 循环输出 Table 数据 + for (int i = 0; i < maraTable.getNumRows(); i++) { + maraTable.setRow(i); + String AUFNR = maraTable.getString("AUFNR"); + String RSPOS = maraTable.getString("RSPOS"); + String MATNR = maraTable.getString("MATNR"); + String MAKTX = maraTable.getString("MAKTX"); + String WERKS = maraTable.getString("WERKS"); + String LGORT = maraTable.getString("LGORT"); + String BDTER = maraTable.getString("BDTER"); + String BDMNG = maraTable.getString("BDMNG"); + String ZQLSL = maraTable.getString("ZQLSL"); + String MEINS = maraTable.getString("MEINS"); + String RGEKZ = maraTable.getString("RGEKZ"); + String DBSKZ = maraTable.getString("DBSKZ"); + System.out.println("订单号:" + AUFNR + + " - 预留/相关需求的项目编号:" + RSPOS + + " - 物料号:" + MATNR + + " - 物料描述(短文本):" + MAKTX + + " - 工厂:" + WERKS + + " - 库存地点:" + LGORT + + " - 组件的需求日期 :" + BDTER + + " - 需求量:" + BDMNG + + " - 欠料数量:" + ZQLSL + + " - 基本计量单位:" + MEINS + + " - 标识:反冲:" + RGEKZ + + " - 直接采购标识:" + DBSKZ ); + SapMaterialPreparation sapMaterialPreparation = new SapMaterialPreparation(); + sapMaterialPreparation.setAUFNR(AUFNR); + sapMaterialPreparation.setBDMNG(BDMNG); + sapMaterialPreparation.setBDTER(BDTER); + sapMaterialPreparation.setDBSKZ(DBSKZ); + sapMaterialPreparation.setLGORT(LGORT); + sapMaterialPreparation.setMAKTX(MAKTX); + sapMaterialPreparation.setMATNR(MATNR); + sapMaterialPreparation.setMEINS(MEINS); + sapMaterialPreparation.setRGEKZ(RGEKZ); + sapMaterialPreparation.setRSPOS(RSPOS); + sapMaterialPreparation.setWERKS(WERKS); + sapMaterialPreparation.setZQLSL(ZQLSL); + sapMaterialPreparationList.add(sapMaterialPreparation); + } + return AjaxResult.success(sapMaterialPreparationList); + } catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + } + diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java new file mode 100644 index 00000000..9eb143dc --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java @@ -0,0 +1,118 @@ +package com.op.sap.service.impl; + +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; +import com.op.sap.domain.SapConn; + +import com.op.sap.service.SapOrderService; +import com.op.sap.util.JCoUtils; + +import com.op.sap.util.SAPConnUtils; +import com.op.system.api.RemotePlanService; +import com.op.sap.domain.SapBom; +import com.op.system.api.model.SapProOrder; +import com.sap.conn.jco.*; +import org.jcp.xml.dsig.internal.dom.Utils; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + +@Service +public class SapOrderServiceImpl implements SapOrderService { + + + @Autowired + private RemotePlanService remotePlanService; + + @Override + public AjaxResult shopOrderSync(SapProOrder sapProOrder) { + // 连接 + + try { + // 获取调用 RFC 函数对象 + //获取连接 + JCoDestination dest = SAPConnUtils.connect(); + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZPPR_MES_PRO_TO"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + // 配置传入参数 + JCoTable jCoTable = func.getTableParameterList().getTable("S_ERDAT"); + jCoTable.appendRow(); + jCoTable.setValue("SIGN", "I"); + jCoTable.setValue("OPTION", "EQ"); + jCoTable.setValue("LOW", DateUtils.parseDateToStr("yyyyMMdd", sapProOrder.getCreateTime())); + func.execute(dest);//执行调用函数 + // 获取 内表 - ZMES_PRO + JCoTable maraTable = func.getTableParameterList().getTable("ZMES_PRO"); + JCoRecordMetaData metaData = maraTable.getRecordMetaData(); + System.out.println("###" + metaData.toString()); + SapProOrder proOrder = new SapProOrder(); + List proOrderList = new ArrayList<>(); + // 循环输出 Table 数据 + for (int i = 0; i < maraTable.getNumRows(); i++) { + maraTable.setRow(i); + String AUFNR = maraTable.getString("AUFNR"); + String AUART = maraTable.getString("AUART"); + String MAUFNR = maraTable.getString("MAUFNR"); + String PLNBEZ = maraTable.getString("PLNBEZ"); + String MAKTX = maraTable.getString("MAKTX"); + String PWERK = maraTable.getString("PWERK"); + String GAMNG = maraTable.getString("GAMNG"); + String GMEIN = maraTable.getString("GMEIN"); + String PLNNR = maraTable.getString("PLNNR"); + String GSTRP = maraTable.getString("GSTRP"); + String GLTRP = maraTable.getString("GLTRP"); + String ERNAM = maraTable.getString("ERNAM"); + String ERDAT = maraTable.getString("ERDAT"); + String STTXT = maraTable.getString("STTXT"); + System.out.println("订单号:" + AUFNR + " - 订单类型:" + AUART + " - 上级订单编号:" + MAUFNR + " - 物料号:" + PLNBEZ + " - 物料描述(短文本):" + MAKTX + + " - 订单的计划工厂:" + PWERK + " - 订单数量总计:" + GAMNG + " - 基本计量单位:" + GMEIN + " - 任务清单组码:" + PLNNR + " - 基本开始日期:" + GSTRP + + " - 基本完成日期:" + GLTRP + " - 输入者:" + ERNAM + " - 创建日期:" + ERDAT + " - 系统状态:" + STTXT); + proOrder.setId(IdUtils.fastSimpleUUID()); + proOrder.setPlanFactoryCode(PWERK); + proOrder.setOrderCode(AUFNR); + proOrder.setOrderType(AUART); + proOrder.setProdCode(PLNBEZ); + proOrder.setProdDesc(MAKTX); + proOrder.setQuantity(Long.parseLong(GAMNG.substring(0, GAMNG.indexOf(".")))); + proOrder.setUnit(GMEIN); + proOrder.setWorkerOrder(PLNNR); + proOrder.setPlanProDate(DateUtils.dateTime("yyyy-MM-dd", GSTRP)); + proOrder.setPlanComplete(DateUtils.dateTime("yyyy-MM-dd", GLTRP)); + proOrder.setParentOrder(MAUFNR); + proOrder.setCreateBy(ERNAM); + proOrder.setCreateTime(DateUtils.dateTime("yyyy-MM-dd", ERDAT)); + proOrder.setUpdateBy(ERNAM); + proOrder.setUpdateTime(DateUtils.dateTime("yyyy-MM-dd", ERDAT)); + proOrder.setStatus("0"); + proOrderList.add(proOrder); + // remotePlanService.sapAddOrder(proOrder); + // remoteMesService.sapAddOrder(proOrder); + } + + return AjaxResult.success(proOrderList); + } catch (Exception e) { + return null; + } + } +} + + + + + + + + + + + diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapServiceImpl.java deleted file mode 100644 index 972e7738..00000000 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapServiceImpl.java +++ /dev/null @@ -1,305 +0,0 @@ -package com.op.sap.service.impl; - -import com.op.common.core.domain.R; -import com.op.common.core.utils.DateUtils; -import com.op.common.core.utils.http.HttpUtils; -import com.op.common.core.utils.uuid.IdUtils; -import com.op.sap.domain.SapConn; -import com.op.sap.service.SapService; -import com.op.sap.util.SAPConnUtils; -import com.op.system.api.RemoteMesService; -import com.op.system.api.RemotePlanService; -import com.op.system.api.model.SapProOrder; -import com.sap.conn.jco.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class SapServiceImpl implements SapService { - - - @Autowired - private RemotePlanService remotePlanService; - - @Value("${sap.ashost}") - public String ashost; - - @Value("${sap.sysnr}") - public String sysnr; - - @Value("${sap.client}") - public String client; - - @Value("${sap.user}") - public String user; - - @Value("${sap.passwd}") - public String passwd; - - @Value("${sap.lang}") - public String lang; - - @Value("${sap.pool_capacity}") - public String pool_capacity; - - @Value("${sap.peak_limit}") - public String peak_limit; - - @Value("${sap.saprouter}") - public String saprouter; - - @Override - public List shopOrderSync(SapProOrder sapProOrder) { - // 连接 - SapConn con = new SapConn( - ashost, - sysnr, - client, - user, - passwd, - lang, - pool_capacity, - peak_limit, - saprouter - ); - JCoDestination jCoDestination = SAPConnUtils.connect(con); - try { - // 获取调用 RFC 函数对象 - JCoFunction func = jCoDestination.getRepository().getFunction("ZPPR_MES_PRO_TO"); - // 配置传入参数 - JCoParameterList importParameterList = func.getImportParameterList(); - //importParameterList.setValue("S_AUFNR",001002125255 ); - // 调用并获取返回值 - func.execute(jCoDestination); - // 获取 内表 - ZMES_PRO - JCoTable maraTable = func.getTableParameterList().getTable("ZMES_PRO"); - JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - System.out.println("###"+metaData.toString()); - SapProOrder proOrder=new SapProOrder(); - List proOrderList=new ArrayList<>(); - // 循环输出 Table 数据 - for (int i = 0; i < maraTable.getNumRows(); i++) { - maraTable.setRow(i); - String AUFNR = maraTable.getString("AUFNR"); - String AUART = maraTable.getString("AUART"); - String MAUFNR = maraTable.getString("MAUFNR"); - String PLNBEZ = maraTable.getString("PLNBEZ"); - String MAKTX = maraTable.getString("MAKTX"); - String PWERK = maraTable.getString("PWERK"); - String GAMNG = maraTable.getString("GAMNG"); - String GMEIN = maraTable.getString("GMEIN"); - String PLNNR = maraTable.getString("PLNNR"); - String GSTRP = maraTable.getString("GSTRP"); - String GLTRP = maraTable.getString("GLTRP"); - String ERNAM = maraTable.getString("ERNAM"); - String ERDAT = maraTable.getString("ERDAT"); - String STTXT = maraTable.getString("STTXT"); - System.out.println("订单号:" +AUFNR+" - 订单类型:" + AUART+ " - 上级订单编号:" + MAUFNR+ " - 物料号:" + PLNBEZ+ " - 物料描述(短文本):" + MAKTX - + " - 订单的计划工厂:" + PWERK+ " - 订单数量总计:" + GAMNG+ " - 基本计量单位:" + GMEIN+ " - 任务清单组码:" + PLNNR+ " - 基本开始日期:" + GSTRP - + " - 基本完成日期:" + GLTRP+ " - 输入者:" + ERNAM+ " - 创建日期:" + ERDAT+ " - 系统状态:" + STTXT); - proOrder.setId(IdUtils.fastSimpleUUID()); - proOrder.setPlanFactoryCode(PWERK); - proOrder.setOrderCode(AUFNR); - proOrder.setOrderType(AUART); - proOrder.setProdCode(PLNBEZ); - proOrder.setProdDesc(MAKTX); - proOrder.setQuantity(Long.parseLong(GAMNG.substring(0,GAMNG.indexOf(".")))); - proOrder.setUnit(GMEIN); - proOrder.setWorkerOrder(PLNNR); - proOrder.setPlanProDate(DateUtils.dateTime("yyyy-MM-dd",GSTRP)); - proOrder.setPlanComplete(DateUtils.dateTime("yyyy-MM-dd",GLTRP)); - proOrder.setParentOrder(MAUFNR); - proOrder.setCreateBy(ERNAM); - proOrder.setCreateTime(DateUtils.dateTime("yyyy-MM-dd",ERDAT)); - proOrder.setUpdateBy(ERNAM); - proOrder.setUpdateTime(DateUtils.dateTime("yyyy-MM-dd",ERDAT)); - proOrder.setStatus("0"); - proOrderList.add(proOrder); - // remotePlanService.sapAddOrder(proOrder); - // remoteMesService.sapAddOrder(proOrder); - } - return proOrderList; - } catch (Exception e) { - return null; - } - } - - - @Override - public R sapItem() { - // 连接 - SapConn con = new SapConn( - ashost, - sysnr, - client, - user, - passwd, - lang, - pool_capacity, - peak_limit, - saprouter - ); - JCoDestination jCoDestination = SAPConnUtils.connect(con); - try { - // 获取调用 RFC 函数对象 - JCoFunction func = jCoDestination.getRepository().getFunction("ZMMR_MES_MAT_GET"); - // 配置传入参数 - JCoParameterList importParameterList = func.getImportParameterList(); - //importParameterList.setValue("S_AUFNR",001002125255 ); - // 调用并获取返回值 - func.execute(jCoDestination); - // 获取 内表 - ZMES_PRO - JCoTable maraTable = func.getTableParameterList().getTable("LT_MARA"); - JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - System.out.println("###"+metaData.toString()); - SapProOrder proOrder=new SapProOrder(); - List proOrderList=new ArrayList<>(); - // 循环输出 Table 数据 - for (int i = 0; i < maraTable.getNumRows(); i++) { - maraTable.setRow(i); - String AUFNR = maraTable.getString("AUFNR"); - String AUART = maraTable.getString("AUART"); - String MAUFNR = maraTable.getString("MAUFNR"); - String PLNBEZ = maraTable.getString("PLNBEZ"); - - - } - } catch (Exception e) { - return R.fail(e.getMessage()); - } - return R.ok(); - } - - @Override - public R sapBom() { - SapConn con = new SapConn( - ashost, - sysnr, - client, - user, - passwd, - lang, - pool_capacity, - peak_limit, - saprouter - ); - JCoDestination jCoDestination = SAPConnUtils.connect(con); - try { - // 获取调用 RFC 函数对象 - JCoFunction func = jCoDestination.getRepository().getFunction("ZMMR_MES_MAT_GET"); - // 配置传入参数 - JCoParameterList importParameterList = func.getImportParameterList(); - //importParameterList.setValue("S_AUFNR",001002125255 ); - // 调用并获取返回值 - func.execute(jCoDestination); - // 获取 内表 - ZMES_PRO - JCoTable maraTable = func.getTableParameterList().getTable("LT_MARA"); - JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - System.out.println("###"+metaData.toString()); - SapProOrder proOrder=new SapProOrder(); - List proOrderList=new ArrayList<>(); - // 循环输出 Table 数据 - for (int i = 0; i < maraTable.getNumRows(); i++) { - maraTable.setRow(i); - String AUFNR = maraTable.getString("AUFNR"); - String AUART = maraTable.getString("AUART"); - String MAUFNR = maraTable.getString("MAUFNR"); - String PLNBEZ = maraTable.getString("PLNBEZ"); - } - } catch (Exception e) { - return R.fail(e.getMessage()); - } - return R.ok(); - } - - - - public static void main(String[] args) throws JCoException { - // 连接 - SapConn con = new SapConn( - "192.168.0.53", - "00", - "800", - "MES", - "123456", - "zh", - "true", - "20", - "" - ); - JCoDestination jCoDestination = SAPConnUtils.connect(con); - // 获取调用 RFC 函数对象 - JCoFunction func = jCoDestination.getRepository().getFunction("ZPPR_MES_PRO_TO"); - // 配置传入参数 - JCoParameterList importParameterList = func.getImportParameterList(); - System.out.println(importParameterList.getListMetaData()); - // importParameterList.setValue("S_ERDAT","2019-11-07" ); - // 调用并获取返回值 - func.execute(jCoDestination); - // 获取 内表 - ZMES_PRO - JCoTable maraTable = func.getTableParameterList().getTable("ZMES_PRO"); - JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - System.out.println("###" + metaData.toString()); - SapProOrder proOrder = new SapProOrder(); - List proOrderList = new ArrayList<>(); - for (int i = 0; i < maraTable.getNumRows(); i++) { - maraTable.setRow(i); - String AUFNR = maraTable.getString("AUFNR"); - String AUART = maraTable.getString("AUART"); - String MAUFNR = maraTable.getString("MAUFNR"); - String PLNBEZ = maraTable.getString("PLNBEZ"); - String MAKTX = maraTable.getString("MAKTX"); - String PWERK = maraTable.getString("PWERK"); - String GAMNG = maraTable.getString("GAMNG"); - String GMEIN = maraTable.getString("GMEIN"); - String PLNNR = maraTable.getString("PLNNR"); - String GSTRP = maraTable.getString("GSTRP"); - String GLTRP = maraTable.getString("GLTRP"); - String ERNAM = maraTable.getString("ERNAM"); - String ERDAT = maraTable.getString("ERDAT"); - String STTXT = maraTable.getString("STTXT"); - System.out.println("订单号:" +AUFNR+" - 订单类型:" + AUART+ " - 上级订单编号:" + MAUFNR+ " - 物料号:" + PLNBEZ+ " - 物料描述(短文本):" + MAKTX - + " - 订单的计划工厂:" + PWERK+ " - 订单数量总计:" + GAMNG+ " - 基本计量单位:" + GMEIN+ " - 任务清单组码:" + PLNNR+ " - 基本开始日期:" + GSTRP - + " - 基本完成日期:" + GLTRP+ " - 输入者:" + ERNAM+ " - 创建日期:" + ERDAT+ " - 系统状态:" + STTXT); - } - // 循环输出 Table 数据 -// for (int i = 0; i < maraTable.getNumRows(); i++) { -// maraTable.setRow(i); -// String MATNR = maraTable.getString("MATNR"); -// String MAKTX = maraTable.getString("MAKTX"); -// String EAN11 = maraTable.getString("EAN11"); -// String MTART = maraTable.getString("MTART"); -// String MTBEZ = maraTable.getString("MTBEZ"); -// String MATKL = maraTable.getString("MATKL"); -// String WGBEZ = maraTable.getString("WGBEZ"); -// String BRGEW = maraTable.getString("BRGEW"); -// String NTGEW = maraTable.getString("NTGEW"); -// String VOLUM = maraTable.getString("VOLUM"); -// String VOLEH = maraTable.getString("VOLEH"); -// String MEINS = maraTable.getString("MEINS"); -// String MEINH = maraTable.getString("MEINH"); -// String UMREZ = maraTable.getString("UMREZ"); -// String UMREN = maraTable.getString("UMREN"); -// String LVORM = maraTable.getString("LVORM"); -// String MENGE = maraTable.getString("MENGE"); -// String MHDHB = maraTable.getString("MHDHB"); -// String SPART = maraTable.getString("SPART"); -// String SPART_NM = maraTable.getString("SPART_NM"); -// String MVGR1 = maraTable.getString("MVGR1"); -// String MVGR1_NM = maraTable.getString("MVGR1_NM"); -// String MVGR2 = maraTable.getString("MVGR2"); -// String MVGR2_NM = maraTable.getString("MVGR2_NM"); -// String MVGR3 = maraTable.getString("MVGR3"); -// String MVGR3_NM = maraTable.getString("MVGR3_NM"); -// String MVGR4 = maraTable.getString("MVGR4"); -// String MVGR4_NM = maraTable.getString("MVGR4_NM"); -// String MVGR5 = maraTable.getString("MVGR5"); -// String MVGR5_NM = maraTable.getString("MVGR5_NM"); -// System.out.println("物料号:" + MATNR + " - 物料描述:" + MAKTX + " - 国际文件号(EAN/UPC):" + EAN11 + " - 物料类型:" + MTART ); -// } - } - -} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/util/JCoUtils.java b/op-modules/op-sap/src/main/java/com/op/sap/util/JCoUtils.java new file mode 100644 index 00000000..08165d84 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/util/JCoUtils.java @@ -0,0 +1,35 @@ +package com.op.sap.util; + +import com.sap.conn.jco.JCoField; +import com.sap.conn.jco.JCoRecordMetaData; +import com.sap.conn.jco.JCoTable; + +public class JCoUtils { + public static void printJCoTable(JCoTable jcoTable) + { + // header + + // JCoRecordMeataData is the meta data of either a structure or a table. + // Each element describes a field of the structure or table. + JCoRecordMetaData tableMeta = jcoTable.getRecordMetaData(); + for(int i = 0; i < tableMeta.getFieldCount(); i++){ + System.out.print(String.format("%s\t", tableMeta.getName(i))); + } + System.out.println(); // new line + + // line items + + for(int i = 0; i < jcoTable.getNumRows(); i++){ + // Sets the row pointer to the specified position(beginning from zero) + jcoTable.setRow(i); + + // Each line is of type JCoStructure + for(JCoField fld : jcoTable){ + System.out.print(String.format("%s\t", fld.getValue())); + } + System.out.println(); + } + } + + +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/util/SAPConnUtils.java b/op-modules/op-sap/src/main/java/com/op/sap/util/SAPConnUtils.java index 7a5424a6..c59a6d27 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/util/SAPConnUtils.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/util/SAPConnUtils.java @@ -8,76 +8,88 @@ import com.sap.conn.jco.JCoDestination; import com.sap.conn.jco.JCoDestinationManager; import com.sap.conn.jco.JCoException; import com.sap.conn.jco.ext.DestinationDataProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; import java.io.File; import java.io.FileOutputStream; import java.util.Properties; + public class SAPConnUtils { +// +// @Value("${sap.sysnr}") +// public static String sysnr; +// +// @Value("${sap.client}") +// public static String client; +// +// @Value("${sap.user}") +// public static String user; +// +// @Value("${sap.passwd}") +// public static String passwd; +// +// @Value("${sap.lang}") +// public static String lang; +// +// @Value("${sap.pool_capacity}") +// public static String pool_capacity; +// +// @Value("${sap.peak_limit}") +// public static String peak_limit; +// +// @Value("${sap.saprouter}") +// public static String saprouter; private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL"; + static { + Properties connectProperties = new Properties(); + connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "192.168.0.53"); + connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "00"); + connectProperties.setProperty(DestinationDataProvider.JCO_USER, "MES"); + connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "123456"); + connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800"); + connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "zh"); + connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,"20"); + connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY,"true"); + connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER,""); + createDataFile(ABAP_AS_POOLED,"jcoDestination",connectProperties); + } /** - * 创建SAP接口属性文件。 - * @param name ABAP管道名称 - * @param suffix 属性文件后缀 - * @param properties 属性文件内容 + * 创建SAP接口属性文件 + * @param name + * ABAP管道名称 + * @param suffix + * 属性文件后缀 + * @param properties + * 属性文件内容 */ - private static void createDataFile(String name, String suffix, Properties properties){ - File cfg = new File(name+"."+suffix); - if(cfg.exists()){ + + private static void createDataFile(String name, String suffix, Properties properties) { + // TODO Auto-generated method stub + File cfg = new File(name + "." + suffix); + if (cfg.exists()) { cfg.deleteOnExit(); } - try{ - FileOutputStream fos = new FileOutputStream(cfg, false); - properties.store(fos, "for tests only !"); - fos.close(); - }catch (Exception e){ - System.out.println("Create Data file fault, error msg: " + e.toString()); - throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e); + try { + FileOutputStream fos = new FileOutputStream(cfg,false); + properties.store(fos, "for test only!"); + } catch (Exception e) { + // TODO: handle exception +// System.out.println("Create Data file fault,error msg:" + e.toString()); + throw new RuntimeException("无法创建目标文件" + cfg.getName()); } } - /** - * 初始化SAP连接 - */ - private static void initProperties(SapConn sapConn) { - Properties connectProperties = new Properties(); - // SAP服务器 - connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, sapConn.getJCO_ASHOST()); - // SAP系统编号 - connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, sapConn.getJCO_SYSNR()); - // SAP集团 - connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, sapConn.getJCO_CLIENT()); - // SAP用户名 - connectProperties.setProperty(DestinationDataProvider.JCO_USER, sapConn.getJCO_USER()); - // SAP密码 - connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, sapConn.getJCO_PASSWD()); - // SAP登录语言 - connectProperties.setProperty(DestinationDataProvider.JCO_LANG, sapConn.getJCO_LANG()); - // 最大连接数 - connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, sapConn.getJCO_POOL_CAPACITY()); - // 最大连接线程 - connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, sapConn.getJCO_PEAK_LIMIT()); - // SAP ROUTER - connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER, sapConn.getJCO_SAPROUTER()); - - createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties); - } - - /** - * 获取SAP连接 - * @return SAP连接对象 - */ - public static JCoDestination connect(SapConn sapConn){ - System.out.println("正在连接至SAP..."); + public static JCoDestination connect() { JCoDestination destination = null; - initProperties(sapConn); try { destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED); - destination.ping(); - System.out.println("已成功建立sap的连接"); +// System.out.println(destination.getAttributes()); } catch (JCoException e) { - System.out.println("Connect SAP fault, error msg: " + e.toString()); + // TODO: handle exception +// System.out.println("连接SAP失败,错误: " + e.toString()); } return destination; } diff --git a/op-modules/op-sap/src/main/resources/mapper/sap/SapBomComponentMapper.xml b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomComponentMapper.xml new file mode 100644 index 00000000..52b96273 --- /dev/null +++ b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomComponentMapper.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, bom_code, site, product_code, cumc, component, bom_hierarchy, project_no, standard_dosage, loss_rate, loss_amount, cilosses, component_unit, component_pro_flag, msi, sanka, attr1, attr2, attr3, create_by, create_time, update_by, update_time, remark from base_bom_component + + + + + + + + insert into base_bom_component + + id, + bom_code, + site, + product_code, + cumc, + component, + bom_hierarchy, + project_no, + standard_dosage, + loss_rate, + loss_amount, + cilosses, + component_unit, + component_pro_flag, + msi, + sanka, + attr1, + attr2, + attr3, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{id}, + #{bomCode}, + #{site}, + #{productCode}, + #{cumc}, + #{component}, + #{bomHierarchy}, + #{projectNo}, + #{standardDosage}, + #{lossRate}, + #{lossAmount}, + #{cilosses}, + #{componentUnit}, + #{componentProFlag}, + #{msi}, + #{sanka}, + #{attr1}, + #{attr2}, + #{attr3}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update base_bom_component + + bom_code = #{bomCode}, + site = #{site}, + product_code = #{productCode}, + cumc = #{cumc}, + component = #{component}, + bom_hierarchy = #{bomHierarchy}, + project_no = #{projectNo}, + standard_dosage = #{standardDosage}, + loss_rate = #{lossRate}, + loss_amount = #{lossAmount}, + cilosses = #{cilosses}, + component_unit = #{componentUnit}, + component_pro_flag = #{componentProFlag}, + msi = #{msi}, + sanka = #{sanka}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from base_bom_component where id = #{id} + + + + delete from base_bom_component where id in + + #{id} + + + 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 new file mode 100644 index 00000000..47690900 --- /dev/null +++ b/op-modules/op-sap/src/main/resources/mapper/sap/SapBomMapper.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select factory_code, production_version, bom_code, optional_bom, optional_bom_text, pvvd, pved, bom_calculate_number, bom_calculate_unit, bom_base_number, bom_base_unit, component_unit, component_pro_flag, msi, sanka, attr1, attr2, attr3, create_by, create_time, update_by, update_time, remark, current_version from base_bom + + + + + + + + insert into base_bom + + factory_code, + production_version, + bom_code, + optional_bom, + optional_bom_text, + pvvd, + pved, + bom_calculate_number, + bom_calculate_unit, + bom_base_number, + bom_base_unit, + component_unit, + component_pro_flag, + msi, + sanka, + attr1, + attr2, + attr3, + create_by, + create_time, + update_by, + update_time, + remark, + current_version, + + + #{factoryCode}, + #{productionVersion}, + #{bomCode}, + #{optionalBom}, + #{optionalBomText}, + #{pvvd}, + #{pved}, + #{bomCalculateNumber}, + #{bomCalculateUnit}, + #{bomBaseNumber}, + #{bomBaseUnit}, + #{componentUnit}, + #{componentProFlag}, + #{msi}, + #{sanka}, + #{attr1}, + #{attr2}, + #{attr3}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{currentVersion}, + + + + + update base_bom + + production_version = #{productionVersion}, + bom_code = #{bomCode}, + optional_bom = #{optionalBom}, + optional_bom_text = #{optionalBomText}, + pvvd = #{pvvd}, + pved = #{pved}, + bom_calculate_number = #{bomCalculateNumber}, + bom_calculate_unit = #{bomCalculateUnit}, + bom_base_number = #{bomBaseNumber}, + bom_base_unit = #{bomBaseUnit}, + component_unit = #{componentUnit}, + component_pro_flag = #{componentProFlag}, + msi = #{msi}, + sanka = #{sanka}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + current_version = #{currentVersion}, + + where factory_code = #{factoryCode} + + + + delete from base_bom where factory_code = #{factoryCode} + + + + delete from base_bom where factory_code in + + #{factoryCode} + + + diff --git a/op-modules/op-scada/op-modules-scada.iml b/op-modules/op-scada/op-modules-scada.iml index 87189627..0cd655a4 100644 --- a/op-modules/op-scada/op-modules-scada.iml +++ b/op-modules/op-scada/op-modules-scada.iml @@ -1,14 +1,14 @@ + + + - - - diff --git a/op-modules/op-scada/src/main/resources/bootstrap.yml b/op-modules/op-scada/src/main/resources/bootstrap.yml index 7083f55f..cb35ac63 100644 --- a/op-modules/op-scada/src/main/resources/bootstrap.yml +++ b/op-modules/op-scada/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: zxl + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: zxl + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-security/op-modules-security.iml b/op-modules/op-security/op-modules-security.iml index 87189627..316b0b50 100644 --- a/op-modules/op-security/op-modules-security.iml +++ b/op-modules/op-security/op-modules-security.iml @@ -1,14 +1,14 @@ + + + - - - @@ -72,7 +72,6 @@ - @@ -99,8 +98,6 @@ - - @@ -124,7 +121,6 @@ - @@ -141,8 +137,29 @@ + + + + + + + + + + + + + + + + + + + + + @@ -176,6 +193,7 @@ + @@ -196,24 +214,6 @@ - - - - - - - - - - - - - - - - - - diff --git a/op-modules/op-security/pom.xml b/op-modules/op-security/pom.xml index b6df5a7c..6f9e8b4b 100644 --- a/op-modules/op-security/pom.xml +++ b/op-modules/op-security/pom.xml @@ -82,6 +82,10 @@ com.op op-common-swagger + + com.op + op-common-security + diff --git a/op-modules/op-security/src/main/resources/bootstrap.yml b/op-modules/op-security/src/main/resources/bootstrap.yml index 88ceff7d..881ad219 100644 --- a/op-modules/op-security/src/main/resources/bootstrap.yml +++ b/op-modules/op-security/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: zxl + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: zxl + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-system/src/main/resources/bootstrap.yml b/op-modules/op-system/src/main/resources/bootstrap.yml index 793453f3..58c6eeba 100644 --- a/op-modules/op-system/src/main/resources/bootstrap.yml +++ b/op-modules/op-system/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-technology/op-modules-technology.iml b/op-modules/op-technology/op-modules-technology.iml index dbdf31c0..0d6a0c46 100644 --- a/op-modules/op-technology/op-modules-technology.iml +++ b/op-modules/op-technology/op-modules-technology.iml @@ -1,14 +1,14 @@ + + + - - - @@ -72,7 +72,6 @@ - @@ -81,8 +80,6 @@ - - @@ -99,8 +96,6 @@ - - @@ -143,7 +138,6 @@ - @@ -214,7 +208,12 @@ - + + + + + + diff --git a/op-modules/op-technology/src/main/resources/bootstrap.yml b/op-modules/op-technology/src/main/resources/bootstrap.yml index 11a2d598..1a90cf03 100644 --- a/op-modules/op-technology/src/main/resources/bootstrap.yml +++ b/op-modules/op-technology/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: chj + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: chj + group: ywl #命名空间 #group: local # 配置中心地址 diff --git a/op-modules/op-wms/src/main/resources/bootstrap.yml b/op-modules/op-wms/src/main/resources/bootstrap.yml index 01b12e10..6cb3e830 100644 --- a/op-modules/op-wms/src/main/resources/bootstrap.yml +++ b/op-modules/op-wms/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: zxl + group: ywl # 服务注册地址 server-addr: 140.249.53.142:8848 config: namespace: lanju-op - group: zxl + group: ywl #命名空间 #group: local # 配置中心地址