.idea/misc.xml
@@ -14,7 +14,7 @@ </list> </option> </component> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/out" /> </component> </project> src/main/java/com/zy/asrs/task/AutoAssignAGVTasks.java
@@ -30,7 +30,7 @@ */ @Component public class AutoAssignAGVTasks { private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); private static final Logger log = LoggerFactory.getLogger(AutoAssignAGVTasks.class); @Autowired private WaitPakinService waitPakinService; @@ -51,7 +51,7 @@ * 自动派发入库任务给AGV */ @Scheduled(cron = "0/3 * * * * ? ") private synchronized void execute(){ public synchronized void execute(){ /** * agv状态 * be_batch @@ -174,7 +174,7 @@ * 自动派发补空板任务给AGV */ @Scheduled(cron = "0/3 * * * * ? ") private synchronized void autoFillEmptyPallets(){ public synchronized void autoFillEmptyPallets(){ /** * 该字段是组托入库自动出发补空托盘标记 * item_num @@ -220,7 +220,7 @@ * 自动派发出库任务给agv搬运 */ @Scheduled(cron = "0/3 * * * * ? ") private synchronized void autoOut(){ public synchronized void autoOut(){ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 30)); if (wrkMasts.isEmpty()) { return; @@ -265,7 +265,7 @@ * 入库任务自动解绑agv站点 */ @Scheduled(cron = "0/3 * * * * ? ") private synchronized void UnbindTheSite(){ public synchronized void UnbindTheSite(){ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("io_type",1,53) .ge("wrk_sts", 2) src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
@@ -47,7 +47,7 @@ * 将两个深库位合并为深浅库位,物料号相同,源库位入库日期早于目标库位对应深库位入库日期,库位状态都为F */ @Scheduled(cron = "0/30 * * * * ?") private void execute() throws ParseException { public void execute() throws ParseException { if (!confirmDeep) return; ReturnT<String> result = checkDeepHandler.start(); src/main/java/com/zy/asrs/task/ErrorStockScheduler.java
@@ -20,7 +20,7 @@ private ErrorStockHandler errorStockHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ public void execute(){ ReturnT<String> returnT = errorStockHandler.start(); if (!returnT.isSuccess()) { log.error(returnT.getMsg()); src/main/java/com/zy/asrs/task/NotifyLogScheduler.java
@@ -20,7 +20,7 @@ private NotifyLogHandler notifyLogHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ public void execute(){ ReturnT<String> returnT = notifyLogHandler.start(); if (!returnT.isSuccess()) { log.error(returnT.getMsg()); src/main/java/com/zy/asrs/task/OverYearLogScheduler.java
@@ -20,7 +20,7 @@ private OverYearLogHandler overYearLogHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ public void execute(){ ReturnT<String> returnT = overYearLogHandler.start(); if (!returnT.isSuccess()) { log.error(returnT.getMsg()); src/main/java/com/zy/asrs/task/PlcLogScheduler.java
@@ -20,7 +20,7 @@ private PlcLogHandler plcLogHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ public void execute(){ ReturnT<String> returnT = plcLogHandler.start(); if (!returnT.isSuccess()) { log.error(returnT.getMsg()); src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -24,7 +24,7 @@ private WrkMastService wrkMastService; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ public void execute(){ List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData(); if (wrkMasts.isEmpty()) { return; src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -28,7 +28,7 @@ private WorkMastHandler workMastHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ public void execute(){ List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData(); if (wrkMasts.isEmpty()) { return; @@ -48,7 +48,7 @@ //拣料任务处理 @Scheduled(cron = "0/3 * * * * ? ") private void jl(){ public void jl(){ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() .eq("io_type",103) .eq("wrk_sts",14L) src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java
New file @@ -0,0 +1,38 @@ package com.zy.common.config.ds; import org.springframework.beans.factory.InitializingBean; import org.springframework.jdbc.datasource.AbstractDataSource; import org.springframework.util.Assert; import javax.sql.DataSource; import java.util.Map; public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean { //多数据源map集合 private Map<Object, Object> targetDataSources; //默认数据源 private Object defaultTargetDataSource; //其实就是targetDataSources,后面的afterPropertiesSet()方法会将targetDataSources赋值给resolvedDataSources private Map<Object, DataSource> resolvedDataSources; private DataSource resolvedDefaultDataSource; public void setTargetDataSources(Map<Object, Object> targetDataSources) { this.targetDataSources = targetDataSources; } protected DataSource determineTargetDataSource() { Assert.notNull(this.resolvedDataSources, "DataSource router not initialized"); Object lookupKey = this.determineCurrentLookupKey(); DataSource dataSource = (DataSource) this.resolvedDataSources.get(lookupKey); if (dataSource == null && ( lookupKey == null)) { dataSource = this.resolvedDefaultDataSource; } if (dataSource == null) { throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]"); } else { return dataSource; } } protected abstract Object determineCurrentLookupKey(); } src/main/java/com/zy/common/config/ds/DataSourceAop.java
New file @@ -0,0 +1,27 @@ package com.zy.common.config.ds; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Aspect @Component public class DataSourceAop { @Before("execution(* com.zy.asrs..*(..))") public void setDataSource2test01() { //System.err.println("test01业务"); DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST01); } @Before("execution(* com.zy.system..*(..))") public void setDataSource2test012() { //System.err.println("test01业务"); DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST01); } @Before("execution(* com.zy.third..*(..))") public void setDataSource2test02() { //System.err.println("test02业务"); DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST02); } } src/main/java/com/zy/common/config/ds/DataSourceConfig.java
New file @@ -0,0 +1,54 @@ package com.zy.common.config.ds; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; @Configuration public class DataSourceConfig { @Value("${other.datasource.jdbc-url}") private String url; @Value("${other.datasource.username}") private String username; @Value("${other.datasource.password}") private String password; @Value("${other.datasource.driver-class-name}") private String driverClassName; // 主数据源 @Bean(name = "dataSource") @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } // 次数据源 @Bean(name = "slaveDataSource") public DataSource secondaryDataSource() { HikariConfig config = new HikariConfig(); config.setJdbcUrl(url); config.setUsername(username); config.setPassword(password); config.setDriverClassName(driverClassName); config.setInitializationFailTimeout(0L); return new HikariDataSource( config); // return DataSourceBuilder.create() // .driverClassName(driverClassName) // .url(url) // .username(username) // .password(password) // .build(); } } src/main/java/com/zy/common/config/ds/DataSourceType.java
New file @@ -0,0 +1,32 @@ package com.zy.common.config.ds; public class DataSourceType { public enum DataBaseType { TEST01, TEST02 } // 使用ThreadLocal保证线程安全 private static final ThreadLocal<DataBaseType> TYPE = new ThreadLocal<DataBaseType>(); // 往当前线程里设置数据源类型 public static void setDataBaseType(DataBaseType dataBaseType) { if (dataBaseType == null) { throw new NullPointerException(); } //System.err.println("[将当前数据源改为]:" + dataBaseType); TYPE.set(dataBaseType); } // 获取数据源类型 public static DataBaseType getDataBaseType() { DataBaseType dataBaseType = TYPE.get() == null ? DataBaseType.TEST01 : TYPE.get(); //System.err.println("[获取当前数据源的类型为]:" + dataBaseType); return dataBaseType; } // 清空数据类型 public static void clearDataBaseType() { TYPE.remove(); } } src/main/java/com/zy/common/config/ds/DynamicDataSource.java
New file @@ -0,0 +1,11 @@ package com.zy.common.config.ds; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class DynamicDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { DataSourceType.DataBaseType dataBaseType = DataSourceType.getDataBaseType(); return dataBaseType; } } src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java
New file @@ -0,0 +1,40 @@ package com.zy.common.config.ds; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.plugin.Interceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = {"com.zy.asrs.mapper", "com.zy.system.mapper"}, sqlSessionFactoryRef = "primarySqlSessionFactory") public class PrimaryDataSourceConfig { @Bean(name = "primarySqlSessionFactory") @Primary public MybatisSqlSessionFactoryBean primarySqlSessionFactory(@Qualifier("dataSource") DataSource dataSource, PaginationInterceptor paginationInterceptor) throws Exception { MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // 设置MyBatis的Mapper XML文件路径 sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapper/asrs/*.xml")); Interceptor[] interceptors = new Interceptor[]{paginationInterceptor}; sessionFactory.setPlugins(interceptors); return sessionFactory; } @Bean(name = "transactionManager") @Primary public DataSourceTransactionManager primaryTransactionManager(@Qualifier("dataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } } src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java
New file @@ -0,0 +1,46 @@ package com.zy.common.config.ds; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = "com.zy.third.mapper", sqlSessionFactoryRef = "secondarySqlSessionFactory") public class SecondaryDataSourceConfig { @Bean(name = "secondarySqlSessionFactory") public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource, PaginationInterceptor paginationInterceptor) throws Exception { try { MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // 设置MyBatis的Mapper XML文件路径 sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapper/third/*.xml")); Interceptor[] interceptors = new Interceptor[]{paginationInterceptor}; sessionFactory.setPlugins(interceptors); return sessionFactory.getObject(); } catch (Exception e) { e.printStackTrace(); } return null; } @Bean(name = "secondaryTransactionManager") public DataSourceTransactionManager secondaryTransactionManager(@Qualifier("slaveDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } } src/main/resources/application.yml
@@ -10,8 +10,8 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://172.17.3.20:1433;databasename=ycawdasrs # url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs #jdbc-url: jdbc:sqlserver://172.17.3.20:1433;databasename=ycawdasrs jdbc-url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs username: sa password: sa@123 mvc: @@ -31,10 +31,11 @@ # jdbc-url: jdbc:mysql://127.0.0.1:3306/wmsdata # username: root # password: root #driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs username: liku password: 123456 jdbc-url: jdbc:sqlserver://127.0.0.2:1433;databasename=hcwcs username: sa password: sa@123 mybatis-plus: mapper-locations: classpath:mapper/*.xml src/main/resources/mapper/asrs/AdjDetlMapper.xml
src/main/resources/mapper/asrs/ApiLogMapper.xml
src/main/resources/mapper/asrs/ApiMapper.xml
src/main/resources/mapper/asrs/BasCrnErrorMapper.xml
src/main/resources/mapper/asrs/BasCrnOptMapper.xml
src/main/resources/mapper/asrs/BasCrnStatusMapper.xml
src/main/resources/mapper/asrs/BasCrnpMapper.xml
src/main/resources/mapper/asrs/BasDevpMapper.xml
src/main/resources/mapper/asrs/BasErrLogMapper.xml
src/main/resources/mapper/asrs/BasLocStsMapper.xml
src/main/resources/mapper/asrs/BasPlcerrorMapper.xml
src/main/resources/mapper/asrs/BasWhsMapper.xml
src/main/resources/mapper/asrs/BasWrkIotypeMapper.xml
src/main/resources/mapper/asrs/BasWrkStatusMapper.xml
src/main/resources/mapper/asrs/ConfigMapper.xml
src/main/resources/mapper/asrs/DocLogMapper.xml
src/main/resources/mapper/asrs/DocTypeMapper.xml
src/main/resources/mapper/asrs/HostMapper.xml
src/main/resources/mapper/asrs/LicenseInfosMapper.xml
src/main/resources/mapper/asrs/LocCheckMapper.xml
src/main/resources/mapper/asrs/LocDetlMapper.xml
src/main/resources/mapper/asrs/LocMastMapper.xml
src/main/resources/mapper/asrs/ManLocDetlMapper.xml
src/main/resources/mapper/asrs/MatMapper.xml
src/main/resources/mapper/asrs/NodeMapper.xml
src/main/resources/mapper/asrs/OperateLogMapper.xml
src/main/resources/mapper/asrs/OrderDetlMapper.xml
src/main/resources/mapper/asrs/OrderMapper.xml
src/main/resources/mapper/asrs/OrderSettleMapper.xml
src/main/resources/mapper/asrs/PackMapper.xml
src/main/resources/mapper/asrs/PermissionMapper.xml
src/main/resources/mapper/asrs/RequestLogMapper.xml
src/main/resources/mapper/asrs/ResourceMapper.xml
src/main/resources/mapper/asrs/RoleMapper.xml
src/main/resources/mapper/asrs/RolePermissionMapper.xml
src/main/resources/mapper/asrs/RoleResourceMapper.xml
src/main/resources/mapper/asrs/RowLastnoMapper.xml
src/main/resources/mapper/asrs/SaasLogMapper.xml
src/main/resources/mapper/asrs/StaDescMapper.xml
src/main/resources/mapper/asrs/StkPlcmMapper.xml
src/main/resources/mapper/asrs/TagMapper.xml
src/main/resources/mapper/asrs/TrayCodeMapper.xml
src/main/resources/mapper/asrs/UserLoginMapper.xml
src/main/resources/mapper/asrs/UserMapper.xml
src/main/resources/mapper/asrs/ViewInOutMapper.xml
src/main/resources/mapper/asrs/ViewStayTimeMapper.xml
src/main/resources/mapper/asrs/ViewStockUseMapper.xml
src/main/resources/mapper/asrs/ViewWorkInMapper.xml
src/main/resources/mapper/asrs/WaitPakinLogMapper.xml
src/main/resources/mapper/asrs/WaitPakinMapper.xml
src/main/resources/mapper/asrs/WrkDetlLogMapper.xml
src/main/resources/mapper/asrs/WrkDetlMapper.xml
src/main/resources/mapper/asrs/WrkLastnoMapper.xml
src/main/resources/mapper/asrs/WrkMastLogMapper.xml
src/main/resources/mapper/asrs/WrkMastMapper.xml
src/main/resources/mapper/third/ConfigMapper.xmlcopy from src/main/resources/mapper/ConfigMapper.xml copy to src/main/resources/mapper/third/ConfigMapper.xml