diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java
index bcda8719..95aa6590 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java
@@ -2,9 +2,11 @@ package com.op.system.api;
 
 import com.op.common.core.constant.ServiceNameConstants;
 import com.op.common.core.domain.R;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.factory.RemoteDeviceFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -33,4 +35,10 @@ public interface RemoteDeviceService {
 
 	@PostMapping("/deviceTask/equipmentBKTask")
     public R equipmentBKTask();
+
+	@PostMapping("/deviceTask/addDatasource")
+	public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+	@PostMapping("/deviceTask/removeDatasource")
+	public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java
index dea44c1f..99b4b6e6 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteMesService.java
@@ -3,10 +3,9 @@ package com.op.system.api;
 import com.op.common.core.constant.ServiceNameConstants;
 import com.op.common.core.domain.BaseFileData;
 import com.op.common.core.domain.R;
-
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.dto.WCSDTO;
 import com.op.system.api.factory.RemoteMesFallbackFactory;
-import com.op.system.api.model.SapProOrder;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
@@ -41,4 +40,9 @@ public interface RemoteMesService {
 
 	@PostMapping("/wcsInterface/dataBKTask")
 	public R dataBKTask();
+
+	@PostMapping("/reportWork/addDatasource")
+	public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+	@PostMapping("/reportWork/removeDatasource")
+	public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java
index e2095be2..74e0b1df 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteOpenService.java
@@ -1,7 +1,9 @@
 package com.op.system.api;
 
 import com.op.common.core.constant.ServiceNameConstants;
+import com.op.common.core.domain.R;
 import com.op.common.core.web.domain.AjaxResult;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.factory.RemoteOpenFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -35,4 +37,10 @@ public interface RemoteOpenService {
     /**获取HR岗位信息**/
     @GetMapping("/openInterface/GetHrDeptInfo")
     public AjaxResult GetHrDeptInfo();
+
+    @PostMapping("/openInterface/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+    @PostMapping("/openInterface/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemotePlanService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemotePlanService.java
index 92e89e1d..02778f6f 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemotePlanService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemotePlanService.java
@@ -3,6 +3,7 @@ package com.op.system.api;
 import com.op.common.core.constant.ServiceNameConstants;
 import com.op.common.core.domain.BaseFileData;
 import com.op.common.core.domain.R;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.factory.RemotePlanFallbackFactory;
 import com.op.system.api.model.SapProOrder;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -32,4 +33,9 @@ public interface RemotePlanService {
 	@PostMapping("/order/syncSAPOrders")
 	public R syncSAPOrders();
 
+	@PostMapping("/order/addDatasource")
+	public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+	@PostMapping("/order/removeDatasource")
+	public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java
index 768b7b65..f62f615f 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java
@@ -2,6 +2,7 @@ package com.op.system.api;
 
 import com.op.common.core.constant.ServiceNameConstants;
 import com.op.common.core.domain.R;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO;
 import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO;
 import com.op.system.api.factory.RemoteQualityFallbackFactory;
@@ -31,4 +32,10 @@ public interface RemoteQualityService {
 
     @PostMapping("/qcIncome/createIncomeBatchTask")
     public R createIncomeBatchTask();
+
+    @PostMapping("/qcIncome/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+    @PostMapping("/qcIncome/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java
index 6a1b114b..dfd7d205 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java
@@ -2,6 +2,7 @@ package com.op.system.api;
 
 import com.op.common.core.constant.ServiceNameConstants;
 import com.op.common.core.domain.R;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.sap.*;
 import com.op.system.api.factory.RemoteSapFallbackFactory;
 import com.op.system.api.model.SapProOrder;
@@ -119,4 +120,9 @@ public interface RemoteSapService {
     @PostMapping("/sap/FPinventory")
     public R FPinventory(@RequestBody(required = false) Map<String, Object> mapList);
 
+    @PostMapping("/sap/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+    @PostMapping("/sap/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteTechnologyService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteTechnologyService.java
index a5743e07..3ba966b1 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteTechnologyService.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteTechnologyService.java
@@ -2,6 +2,7 @@ package com.op.system.api;
 
 import com.op.common.core.constant.ServiceNameConstants;
 import com.op.common.core.domain.R;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.factory.RemoteTechnologyFallbackFactory;
 import com.op.system.api.model.SapProOrder;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -22,4 +23,9 @@ public interface RemoteTechnologyService {
 	@PostMapping("/order/sapAddOrder")
 	public R<Boolean> sapAddOrder(@RequestBody SapProOrder sapProOrder);
 
+	@PostMapping("/pro/proroute/addDatasource")
+	public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+	@PostMapping("/pro/proroute/removeDatasource")
+	public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteWmsService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteWmsService.java
new file mode 100644
index 00000000..12f7f808
--- /dev/null
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteWmsService.java
@@ -0,0 +1,29 @@
+package com.op.system.api;
+
+import com.op.common.core.constant.ServiceNameConstants;
+import com.op.common.core.domain.R;
+import com.op.system.api.domain.DataSourcePropertyDTO;
+import com.op.system.api.factory.RemoteWmsFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * 用户服务
+ *
+ * @author OP
+ */
+@FeignClient(contextId = "remoteWmsService", value = ServiceNameConstants.WMS_SERVICE, fallbackFactory = RemoteWmsFallbackFactory.class)
+
+
+
+public interface RemoteWmsService {
+
+	@PostMapping("/area/addDatasource")
+	public R addDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+
+	@PostMapping("/area/removeDatasource")
+	public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
+}
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/DataSourcePropertyDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/DataSourcePropertyDTO.java
new file mode 100644
index 00000000..17004e90
--- /dev/null
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/DataSourcePropertyDTO.java
@@ -0,0 +1,80 @@
+package com.op.system.api.domain;
+
+/**
+ * @author zxl
+ * @date 2024年04月12日 11:57
+ */
+public class DataSourcePropertyDTO {
+    private String poolName;
+    private String driverClassName;
+    private String url;
+    private String username;
+    private String password;
+    private String jndiName;
+    private Boolean seata = true;
+    private Boolean lazy;
+
+    public String getPoolName() {
+        return poolName;
+    }
+
+    public void setPoolName(String poolName) {
+        this.poolName = poolName;
+    }
+
+    public String getDriverClassName() {
+        return driverClassName;
+    }
+
+    public void setDriverClassName(String driverClassName) {
+        this.driverClassName = driverClassName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getJndiName() {
+        return jndiName;
+    }
+
+    public void setJndiName(String jndiName) {
+        this.jndiName = jndiName;
+    }
+
+    public Boolean getSeata() {
+        return seata;
+    }
+
+    public void setSeata(Boolean seata) {
+        this.seata = seata;
+    }
+
+    public Boolean getLazy() {
+        return lazy;
+    }
+
+    public void setLazy(Boolean lazy) {
+        this.lazy = lazy;
+    }
+}
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java
index 9868e0fb..866b659c 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java
@@ -1,8 +1,8 @@
 package com.op.system.api.factory;
 
-
 import com.op.common.core.domain.R;
 import com.op.system.api.RemoteDeviceService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -47,6 +47,16 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory<RemoteDevice
 			public R equipmentBKTask() {
 				return R.fail("设备运行记录数据库备份失败"+throwable.getMessage());
 			}
+
+			@Override
+			public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("设备数据源创建失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("设备数据源移除失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteMesFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteMesFallbackFactory.java
index 3390c0a0..18338955 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteMesFallbackFactory.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteMesFallbackFactory.java
@@ -4,6 +4,7 @@ import com.op.common.core.domain.BaseFileData;
 import com.op.common.core.domain.R;
 import com.op.system.api.RemoteMesService;
 
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.dto.WCSDTO;
 import com.op.system.api.model.SapProOrder;
 import org.slf4j.Logger;
@@ -55,6 +56,16 @@ public class RemoteMesFallbackFactory implements FallbackFactory<RemoteMesServic
 			public R dataBKTask() {
 				return R.fail("数据库备份失败:" + throwable.getMessage());
 			}
+
+			@Override
+			public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("mes数据源创建失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("mes数据源删除失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteOpenFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteOpenFallbackFactory.java
index 40aa7c51..443f8c9e 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteOpenFallbackFactory.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteOpenFallbackFactory.java
@@ -1,8 +1,9 @@
 package com.op.system.api.factory;
 
-
+import com.op.common.core.domain.R;
 import com.op.common.core.web.domain.AjaxResult;
 import com.op.system.api.RemoteOpenService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -44,6 +45,16 @@ public class RemoteOpenFallbackFactory implements FallbackFactory<RemoteOpenServ
             public AjaxResult GetHrDeptInfo() {
                 return AjaxResult.error("获取HR部门信息失败"+throwable.getMessage());
             }
+
+            @Override
+            public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+                return R.fail("open数据源创建失败:" + throwable.getMessage());
+            }
+
+            @Override
+            public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+                return R.fail("open数据源删除失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemotePlanFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemotePlanFallbackFactory.java
index c559d0d7..6fd4f8de 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemotePlanFallbackFactory.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemotePlanFallbackFactory.java
@@ -1,8 +1,8 @@
 package com.op.system.api.factory;
 
-import com.op.common.core.domain.BaseFileData;
 import com.op.common.core.domain.R;
 import com.op.system.api.RemotePlanService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.model.SapProOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,6 +33,18 @@ public class RemotePlanFallbackFactory implements FallbackFactory<RemotePlanServ
 			public R syncSAPOrders() {
 				return R.fail("定时任务更新订单失败:" + throwable.getMessage());
 			}
+
+			@Override
+			public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("计划数据源创建失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("计划数据源删除失败:" + throwable.getMessage());
+			}
+
+
 		};
 	}
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java
index 01e7bf34..717a9f63 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java
@@ -1,8 +1,8 @@
 package com.op.system.api.factory;
 
-
 import com.op.common.core.domain.R;
 import com.op.system.api.RemoteQualityService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO;
 import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO;
 import org.slf4j.Logger;
@@ -42,6 +42,16 @@ public class RemoteQualityFallbackFactory implements FallbackFactory<RemoteQuali
 			public R createIncomeBatchTask() {
 				return R.fail("来料检验批量检验任务创建失败:" + throwable.getMessage());
 			}
+
+			@Override
+			public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("质量数据源创建失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("质量数据源移除失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
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 e5c12f88..eebdb006 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
@@ -2,13 +2,12 @@ package com.op.system.api.factory;
 
 import com.op.common.core.domain.R;
 import com.op.system.api.RemoteSapService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.sap.*;
 import com.op.system.api.model.SapProOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 import java.util.Map;
@@ -129,6 +128,16 @@ public class RemoteSapFallbackFactory implements FallbackFactory<RemoteSapServic
                 return R.fail("成品备货单获取失败" + throwable.getMessage());
             }
 
+            @Override
+            public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+                return R.fail("sap新增数据源失败" + throwable.getMessage());
+            }
+
+            @Override
+            public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+                return R.fail("sap数据源删除失败" + throwable.getMessage());
+            }
+
         };
     }
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteTechnologyFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteTechnologyFallbackFactory.java
index 68f2b418..0dd12e79 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteTechnologyFallbackFactory.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteTechnologyFallbackFactory.java
@@ -2,6 +2,7 @@ package com.op.system.api.factory;
 
 import com.op.common.core.domain.R;
 import com.op.system.api.RemoteTechnologyService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.model.SapProOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -26,6 +27,16 @@ public class RemoteTechnologyFallbackFactory implements FallbackFactory<RemoteTe
 				return R.fail("新增SAP订单失败:" + throwable.getMessage());
 			}
 
+			@Override
+			public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("工艺新增数据源失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("工艺移除数据源失败:" + throwable.getMessage());
+			}
+
 		};
 	}
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteWmsFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteWmsFallbackFactory.java
new file mode 100644
index 00000000..4b74eaa5
--- /dev/null
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteWmsFallbackFactory.java
@@ -0,0 +1,39 @@
+package com.op.system.api.factory;
+
+import com.op.common.core.domain.R;
+import com.op.system.api.RemoteWmsService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
+import com.op.system.api.domain.dto.WCSDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 用户服务降级处理
+ *
+ * @author OP
+ */
+@Component
+public class RemoteWmsFallbackFactory implements FallbackFactory<RemoteWmsService> {
+	private static final Logger log = LoggerFactory.getLogger(RemoteWmsFallbackFactory.class);
+
+	@Override
+	public RemoteWmsService create(Throwable throwable) {
+		log.error("Wms服务调用失败:{}", throwable.getMessage());
+		return new RemoteWmsService() {
+			@Override
+			public R addDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("mes数据源创建失败:" + throwable.getMessage());
+			}
+
+			@Override
+			public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
+				return R.fail("mes数据源删除失败:" + throwable.getMessage());
+			}
+		};
+	}
+}
+
diff --git a/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 113093cf..3bff05e2 100644
--- a/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -8,3 +8,4 @@ com.op.system.api.factory.RemoteSapFallbackFactory
 com.op.system.api.factory.RemoteDeviceFallbackFactory
 com.op.system.api.factory.RemoteQualityFallbackFactory
 com.op.system.api.factory.RemoteOpenFallbackFactory
+com.op.system.api.factory.RemoteWmsFallbackFactory
diff --git a/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java b/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java
index 228bf576..e6ec6d70 100644
--- a/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java
+++ b/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java
@@ -1,17 +1,18 @@
 package com.op.device.controller;
 
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.op.common.core.domain.R;
 import com.op.common.core.web.domain.AjaxResult;
-import com.op.device.domain.EquOrder;
-import com.op.device.domain.EquPlan;
-import com.op.device.domain.EquRepairOrder;
-import com.op.device.domain.EquRepairWorkOrder;
-import com.op.device.service.IDevicePDAService;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.device.service.IDeviceTaskService;
-import com.op.device.service.IEquRepairOrderService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
+import com.op.common.core.utils.bean.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+
 /**
  * DeviceTaskController
  *
@@ -24,7 +25,10 @@ public class DeviceTaskController {
 
     @Autowired
     private IDeviceTaskService taskService;
-
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**
      * 点检计划生成
      *
@@ -96,4 +100,20 @@ public class DeviceTaskController {
         }
         return R.fail("设备运行记录数据库备份失败");
     }
+
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
+
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
 }
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java
index 4f1c22df..92ea2b92 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java
@@ -6,28 +6,30 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.op.common.core.domain.ExcelCol;
 import com.op.common.core.domain.R;
 import com.op.common.core.utils.DateUtils;
+import com.op.common.core.utils.bean.BeanUtils;
 import com.op.common.core.utils.poi.ExcelMapUtil;
 import com.op.common.core.utils.uuid.IdUtils;
-import com.op.common.security.utils.SecurityUtils;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.mes.domain.*;
 import com.op.mes.domain.dto.LineChartDto;
 import com.op.mes.domain.dto.SysFactoryDto;
-import com.op.system.api.RemoteSapService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.SysUser;
 import com.op.system.api.domain.device.EquEquipmentDTO;
-import com.op.system.api.domain.dto.MesPrepareDTO;
 import com.op.system.api.domain.dto.MesPrepareDetailDTO;
 import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
-import com.op.system.api.domain.sap.SapMaterialPreparation;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -36,8 +38,6 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.op.common.log.annotation.Log;
-import com.op.common.log.enums.BusinessType;
 import com.op.common.security.annotation.RequiresPermissions;
 import com.op.mes.service.IMesReportWorkService;
 import com.op.common.core.web.controller.BaseController;
@@ -56,7 +56,10 @@ import com.op.common.core.utils.poi.ExcelUtilDailyReport;
 public class MesReportWorkController extends BaseController {
 	@Autowired
 	private IMesReportWorkService mesReportWorkService;
-
+	@Resource
+	private DynamicDatasourceCreator dynamicDatasourceCreator;
+	@Resource
+	private DynamicRoutingDataSource dynamicRoutingDataSource;
 	/**
 	 * 查询报工报表列表
 	 */
@@ -467,7 +470,21 @@ public class MesReportWorkController extends BaseController {
 		List<MesReportWorkConsume> rlist = mesReportWorkService.getWarehouseList(workConsume);
 		return rlist;
 	}
+	@PostMapping("/addDatasource")
+	public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+		DataSourceProperty dataSourceProperty = new DataSourceProperty();
+		BeanUtils.copyProperties(dto,dataSourceProperty);
+		dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+		return R.ok();
+	}
 
+	@PostMapping("/removeDatasource")
+	public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+		DataSourceProperty dataSourceProperty = new DataSourceProperty();
+		BeanUtils.copyProperties(dto,dataSourceProperty);
+		dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+		return R.ok();
+	}
 }
 
 
diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml
index f8ddb0e3..b1b8a35b 100644
--- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml
+++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml
@@ -326,7 +326,7 @@
                  left join base_equipment be on pow.workorder_name = be.equipment_code and be.equipment_type_code = 'equ_type_bzx'
         where pow.workorder_name = #{equCode} and pow.status = 'w2'
           and CONVERT ( DATE, pow.product_date ) = CONVERT ( DATE, GETDATE( ) )
-          and pow.parent_order = '0'
+          and pow.parent_order = '0' and pow.del_flag='0'
     </select>
 
 </mapper>
diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java
index 060784c5..fa4910b8 100644
--- a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java
+++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java
@@ -1,19 +1,22 @@
 package com.op.open.controller;
 
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
+import com.op.common.core.domain.R;
 import com.op.common.core.utils.StringUtils;
 import com.op.common.core.web.controller.BaseController;
 import com.op.common.core.web.domain.AjaxResult;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.open.service.OpenService;
-import com.op.system.api.RemoteQualityService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.device.EquRepairOrderDTO;
 import com.op.system.api.domain.dto.WCSDTO;
 import com.op.system.api.domain.quality.QcCheckTaskProduceDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import javax.annotation.Resource;
 import java.util.Map;
-
+import com.op.common.core.utils.bean.BeanUtils;
 /**
  * mes上位机专属
  *
@@ -26,8 +29,10 @@ public class OpenController extends BaseController {
 
     @Autowired
     private OpenService openService;
-
-
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**
      * 下一工序机台集合获取
      * •接口描述:成型机码垛完、暂存区、WCS 请求 MES 获取目的地集合
@@ -185,4 +190,19 @@ public class OpenController extends BaseController {
         return openService.GetHrPostInfo();
     }
 
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
+
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
 }
diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java
index f4e5a02a..71ec4418 100644
--- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java
+++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java
@@ -2,13 +2,8 @@ package com.op.open.service.impl;
 
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.op.common.core.constant.Constants;
-import com.op.common.core.context.SecurityContextHolder;
-import com.op.common.core.domain.R;
 import com.op.common.core.utils.DateUtils;
 import com.op.common.core.utils.bean.BeanUtils;
 import com.op.common.core.utils.http.HttpUtils;
@@ -17,43 +12,24 @@ import com.op.common.core.web.domain.AjaxResult;
 import com.op.common.security.utils.SecurityUtils;
 import com.op.open.mapper.OpenMapper;
 import com.op.open.service.OpenService;
-import com.op.system.api.RemoteSapService;
-import com.op.system.api.domain.SysSapLog;
 import com.op.system.api.domain.device.DeviceRepairOrder;
 import com.op.system.api.domain.device.EquRepairOrderDTO;
 import com.op.system.api.domain.dto.WCSDTO;
 import com.op.system.api.domain.dto.WCSDataDTO;
-import com.op.system.api.domain.mes.MesReportWorkConsumeDTO;
-import com.op.system.api.domain.mes.MesReportWorkDTO;
-import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
 import com.op.system.api.domain.mes.ProRfidProcessDetail;
 import com.op.system.api.domain.quality.*;
-import com.op.system.api.domain.sap.SapCloseOrderQuery;
-import com.op.system.api.domain.sap.SapRFW;
 import org.apache.commons.lang.StringUtils;
-import org.apache.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
 import java.math.BigDecimal;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -327,6 +303,17 @@ public class OpenServiceImpl implements OpenService {
     public int insertQcCheckTaskProduce(QcCheckTaskProduceDTO qcCheckTaskProduce) {
         DynamicDataSourceContextHolder.push("ds_" + qcCheckTaskProduce.getFactoryCode());
 
+
+        // 创建两个日期时间对象
+//        LocalDateTime dateTime1 = LocalDateTime.of(2023, 1, 1, 10, 30); // 2023年1月1日 10:30
+//        LocalDateTime dateTime2 = LocalDateTime.now(); // 2023年1月2日 11:45
+//        // 计算分钟差
+//        long minutesBetween = Duration.between(dateTime1, dateTime2).toMinutes();
+//        if(minutesBetween<=1){
+//            logger.info("++++++++++++检验任务1分钟内生成过,不再重复创建++++++++++++++");
+//            return 0;
+//        }
+
         qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate());
 
         String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java
index 08a18768..2bc863f3 100644
--- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java
+++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderController.java
@@ -2,19 +2,20 @@ package com.op.plan.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
+
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.op.common.core.utils.bean.BeanUtils;
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.op.common.core.domain.ExcelCol;
 import com.op.common.core.domain.R;
-import com.op.common.core.utils.DateUtils;
-import com.op.common.core.utils.StringUtils;
 import com.op.common.core.utils.poi.ExcelMapUtil;
-import com.op.common.security.utils.SecurityUtils;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.plan.domain.dto.SplitOrderDTO;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -47,7 +48,11 @@ import org.springframework.web.multipart.MultipartFile;
 public class ProOrderController extends BaseController {
     @Autowired
     private IProOrderService proOrderService;
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
 
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**
      * 通过订单Code查询级联订单信息并封装返回
      *
@@ -309,4 +314,19 @@ public class ProOrderController extends BaseController {
             return AjaxResult.error();
         }
     }
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
+
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
 }
diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java
index c952d900..abd919ba 100644
--- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java
+++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java
@@ -9,26 +9,27 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.op.common.core.domain.R;
 import com.op.common.core.utils.DateUtils;
 import com.op.common.core.utils.bean.BeanUtils;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.common.security.utils.SecurityUtils;
 import com.op.quality.domain.*;
-import com.op.system.api.RemoteOpenService;
 import com.op.system.api.RemoteSapService;
 import com.op.system.api.RemoteUserService;
-import com.op.system.api.domain.SysRole;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.SysUser;
-import com.op.system.api.domain.quality.HRInfo;
 import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO;
-import com.op.system.api.domain.sap.SapSupplier;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
@@ -69,6 +70,10 @@ public class QcCheckTaskIncomeController extends BaseController {
     @Autowired
     private RemoteSapService remoteSapService;
 
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**
      * 查询来料检验列表
      */
@@ -451,4 +456,20 @@ public class QcCheckTaskIncomeController extends BaseController {
         List<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getCkeckProjectXJList(qcCheckTaskIncome);
         return getDataTable(list);
     }
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
+
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
+
 }
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 6306ecab..94251f85 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,8 +1,12 @@
 package com.op.sap.controller;
 
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.op.common.core.domain.R;
+import com.op.common.core.utils.bean.BeanUtils;
 import com.op.common.core.web.controller.BaseController;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.common.log.annotation.Log;
 import com.op.common.log.enums.BusinessType;
 import com.op.sap.domain.vo.*;
@@ -10,6 +14,7 @@ import com.op.sap.mapper.SapBomMapper;
 import com.op.sap.service.*;
 
 import com.op.system.api.RemoteUserService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.SysUser;
 import com.op.system.api.domain.sap.*;
 import com.op.system.api.domain.sap.SapCustom;
@@ -20,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -60,6 +66,10 @@ public class SapController extends BaseController {
     @Autowired
     private SapWmsService sapWmsService;
 
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**====================主数据相关===================================================================================*/
     /**
      * 物料同步接口
@@ -521,5 +531,19 @@ public class SapController extends BaseController {
     public R incomingConversion(@RequestBody(required = false) Map<String, Object> mapList) {
         return sapItemSyncService.incomingConversion(mapList);
     }
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
 
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
 }
diff --git a/op-modules/op-system/src/main/java/com/op/system/mapper/SysDatasourceMapper.java b/op-modules/op-system/src/main/java/com/op/system/mapper/SysDatasourceMapper.java
index b2ac4385..c0fe1e05 100644
--- a/op-modules/op-system/src/main/java/com/op/system/mapper/SysDatasourceMapper.java
+++ b/op-modules/op-system/src/main/java/com/op/system/mapper/SysDatasourceMapper.java
@@ -76,4 +76,6 @@ public interface SysDatasourceMapper {
     List<SysDatasource> selectDBListByDept(SysDatasource qo);
 
     void deletUserDB(String userCode);
+
+    void deleteUserByIds(String[] ids);
 }
diff --git a/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java b/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java
index 4a2cfedc..429dd5fd 100644
--- a/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java
+++ b/op-modules/op-system/src/main/java/com/op/system/service/impl/SysDatasourceServiceImpl.java
@@ -1,10 +1,14 @@
 package com.op.system.service.impl;
 
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.op.common.core.utils.DateUtils;
 import com.op.common.core.utils.StringUtils;
+import com.op.common.core.utils.bean.BeanUtils;
 import com.op.common.core.utils.uuid.IdUtils;
 import com.op.common.datasource.creator.DynamicDatasourceCreator;
+import com.op.system.api.*;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.SysUser;
 import com.op.system.domain.SysDatasource;
 import com.op.system.mapper.SysDatasourceMapper;
@@ -43,6 +47,24 @@ public class SysDatasourceServiceImpl implements ISysDatasourceService {
     private String driver;
     @Resource
     private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Autowired
+    private RemoteQualityService remoteQualityService;
+    @Autowired
+    private RemotePlanService remotePlanService;
+    @Autowired
+    private RemoteMesService remoteMesService;
+    @Autowired
+    private RemoteWmsService remoteWmsService;
+    @Autowired
+    private RemoteDeviceService remoteDeviceService;
+    @Autowired
+    private RemoteOpenService remoteOpenService;
+    @Autowired
+    private RemoteSapService remoteSapService;
+    @Autowired
+    private RemoteTechnologyService remoteTechnologyService;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
 
     /**
      * 查询工厂数据库
@@ -118,7 +140,32 @@ public class SysDatasourceServiceImpl implements ISysDatasourceService {
      */
     @Override
     public int deleteSysDatasourceByIds(String[] ids) {
-        return sysDatasourceMapper.deleteSysDatasourceByIds(ids);
+
+        for(String id:ids){
+            SysDatasource sysDatasource = sysDatasourceMapper.selectSysDatasourceById(id);
+            DataSourcePropertyDTO dataSourceProperty = new DataSourcePropertyDTO();
+            dataSourceProperty.setPoolName(sysDatasource.getPoolName());
+            dynamicRoutingDataSource.removeDataSource(sysDatasource.getPoolName());
+//            //计划删除数据源
+//            remotePlanService.removeDatasource(dataSourceProperty);
+            //质量删除数据源
+            remoteQualityService.removeDatasource(dataSourceProperty);
+//            //mes删除数据源
+//            remoteMesService.removeDatasource(dataSourceProperty);
+            //wms删除数据源
+            remoteWmsService.removeDatasource(dataSourceProperty);
+//            //device删除数据源
+//            remoteDeviceService.removeDatasource(dataSourceProperty);
+//            //open删除数据源
+//            remoteOpenService.removeDatasource(dataSourceProperty);
+//            //sap删除数据源
+//            remoteSapService.removeDatasource(dataSourceProperty);
+//            //工艺删除数据源
+//            remoteTechnologyService.removeDatasource(dataSourceProperty);
+        }
+        sysDatasourceMapper.deleteSysDatasourceByIds(ids);
+        sysDatasourceMapper.deleteUserByIds(ids);
+        return 1;
     }
 
     /**
@@ -217,6 +264,25 @@ public class SysDatasourceServiceImpl implements ISysDatasourceService {
             dataSourceProperty.setLazy(false);
             dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
 
+            DataSourcePropertyDTO dto = new DataSourcePropertyDTO();
+            BeanUtils.copyProperties(dataSourceProperty,dto);
+            //计划加入数据源
+//            remotePlanService.addDatasource(dto);
+            //质量加入数据源
+            remoteQualityService.addDatasource(dto);
+//            //mes加入数据源
+//            remoteMesService.addDatasource(dto);
+            //wms加入数据源
+            remoteWmsService.addDatasource(dto);
+//            //device加入数据源
+//            remoteDeviceService.addDatasource(dto);
+//            //open加入数据源
+//            remoteOpenService.addDatasource(dto);
+//            //sap加入数据源
+//            remoteSapService.addDatasource(dto);
+//            //工艺加入数据源
+//            remoteTechnologyService.addDatasource(dto);
+
             return "数据库链接测试成功,数据库链接状态正常";
         } catch (ClassNotFoundException | SQLException classNotFoundException) {
             return "数据库链接异常,请检查数据库基本信息。";
diff --git a/op-modules/op-system/src/main/resources/mapper/system/SysDatasourceMapper.xml b/op-modules/op-system/src/main/resources/mapper/system/SysDatasourceMapper.xml
index 558b903b..f076c8d6 100644
--- a/op-modules/op-system/src/main/resources/mapper/system/SysDatasourceMapper.xml
+++ b/op-modules/op-system/src/main/resources/mapper/system/SysDatasourceMapper.xml
@@ -193,4 +193,10 @@
     <delete id="deletUserDB">
         delete from sys_user_datasource where user_id =#{userCode}
     </delete>
+    <delete id="deleteUserByIds">
+        delete from sys_user_datasource where datasource_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
 </mapper>
diff --git a/op-modules/op-technology/src/main/java/com/op/technology/controller/ProRouteController.java b/op-modules/op-technology/src/main/java/com/op/technology/controller/ProRouteController.java
index c899cb77..c71154ba 100644
--- a/op-modules/op-technology/src/main/java/com/op/technology/controller/ProRouteController.java
+++ b/op-modules/op-technology/src/main/java/com/op/technology/controller/ProRouteController.java
@@ -1,18 +1,24 @@
 package com.op.technology.controller;
 
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.op.common.core.domain.R;
+import com.op.common.core.utils.bean.BeanUtils;
 import com.op.common.core.utils.poi.ExcelUtil;
 import com.op.common.core.utils.uuid.IdUtils;
 import com.op.common.core.web.domain.AjaxResult;
 import com.op.common.core.web.page.TableDataInfo;
 import com.op.common.core.web.controller.BaseController;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
 import com.op.common.log.annotation.Log;
 import com.op.common.log.enums.BusinessType;
 import com.op.common.security.annotation.RequiresPermissions;
 import com.op.system.api.RemoteSapService;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import com.op.system.api.domain.sap.SapRouterQuery;
 import com.op.technology.domain.ProRoute;
 import com.op.technology.service.IProRouteProcessService;
@@ -45,7 +51,10 @@ public class ProRouteController extends BaseController {
 
     @Autowired
     private RemoteSapService remoteSapService;
-
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**
      * 查询工艺路线列表
      */
@@ -148,4 +157,20 @@ public class ProRouteController extends BaseController {
         }
         return AjaxResult.error("手动同步失败");
     }
+
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
+
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
 }
diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseAreaController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseAreaController.java
index c0011ec5..465d03ed 100644
--- a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseAreaController.java
+++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseAreaController.java
@@ -1,8 +1,15 @@
 package com.op.wms.controller;
 
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
+import com.op.common.core.domain.R;
+import com.op.common.core.utils.bean.BeanUtils;
+import com.op.common.datasource.creator.DynamicDatasourceCreator;
+import com.op.system.api.domain.DataSourcePropertyDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -33,7 +40,10 @@ import com.op.common.core.web.page.TableDataInfo;
 public class BaseAreaController extends BaseController {
     @Autowired
     private IBaseAreaService baseAreaService;
-
+    @Resource
+    private DynamicDatasourceCreator dynamicDatasourceCreator;
+    @Resource
+    private DynamicRoutingDataSource dynamicRoutingDataSource;
     /**
      * 查询库区列表
      */
@@ -101,4 +111,20 @@ public class BaseAreaController extends BaseController {
     public AjaxResult remove(@PathVariable String[] areaIds) {
         return toAjax(baseAreaService.deleteBaseAreaByAreaIds(areaIds));
     }
+    @PostMapping("/addDatasource")
+    public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
+        return R.ok();
+    }
+
+    @PostMapping("/removeDatasource")
+    public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
+        DataSourceProperty dataSourceProperty = new DataSourceProperty();
+        BeanUtils.copyProperties(dto,dataSourceProperty);
+        dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
+        return R.ok();
+    }
+
 }
diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/BaseProduct.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/BaseProduct.java
index 2f4b896e..d326c2be 100644
--- a/op-modules/op-wms/src/main/java/com/op/wms/domain/BaseProduct.java
+++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/BaseProduct.java
@@ -348,7 +348,7 @@ public class BaseProduct extends BaseEntity {
      * 报工汇率
      */
     @Excel(name = "报工汇率")
-    private Integer reportRate;
+    private BigDecimal reportRate;
 
     public void setCategory(String category) {
         this.category = category;
@@ -790,12 +790,12 @@ public class BaseProduct extends BaseEntity {
         return mtart;
     }
 
-    public void setReportRate(Integer reportRate) {
-        this.reportRate = reportRate;
+    public BigDecimal getReportRate() {
+        return reportRate;
     }
 
-    public Integer getReportRate() {
-        return reportRate;
+    public void setReportRate(BigDecimal reportRate) {
+        this.reportRate = reportRate;
     }
 
     @Override