动态数据源垮系统加载

master
zhaoxiaolin 12 months ago
parent 17531927aa
commit f27d2dcbe9

@ -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);
}

@ -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);
}

@ -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);
}

@ -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);
}

@ -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);
}

@ -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);
}

@ -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);
}

@ -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);
}

@ -0,0 +1,80 @@
package com.op.system.api.domain;
/**
* @author zxl
* @date 20240412 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;
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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());
}
};
}
}

@ -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

@ -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();
}
}

@ -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();
}
}

@ -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>

@ -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();
}
}

@ -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());

@ -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();
}
}

@ -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();
}
}

@ -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();
}
}

@ -76,4 +76,6 @@ public interface SysDatasourceMapper {
List<SysDatasource> selectDBListByDept(SysDatasource qo);
void deletUserDB(String userCode);
void deleteUserByIds(String[] ids);
}

@ -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 "数据库链接异常,请检查数据库基本信息。";

@ -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>

@ -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();
}
}

@ -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();
}
}

@ -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

Loading…
Cancel
Save