/*-------------------------application-context.xml------------------------------*/
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd "> <!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> -->
<!-- Connection Info -->
<!-- Oracle
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.13.105:1521:acuems" />
<property name="username" value="emsuser" />
<property name="password" value="123456" />
-->
<!-- mysql
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/eds?useUnicode=true&characterEncoding=UTF-8" />
<property name="url" value="jdbc:mysql://192.168.13.102:3306/eds?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="123456" /> --> <!-- SQLServer -->
<!-- <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://192.168.13.104\\MSSQLSERVER:1433;DatabaseName=acuems"/>
<property name="username" value="sa" />
<property name="password" value="123456" /> -->
<!-- Connection Pooling Info
<property name="maxActive" value="50" />
<property name="maxIdle" value="200" />
<property name="defaultAutoCommit" value="false" />
<property name="timeBetweenEvictionRunsMillis" value="3600000"/>
<property name="minEvictableIdleTimeMillis" value="3600000"/>-->
<!-- </bean> -->
<!-- 以下三个数据源是为了在处理报警数据时,把报警记录、短信、邮件放到一个事务里, 这三个数据源是在tomcat下配置的,需要修改tomcat/conf/context.xml,并在tomcat/lib下添加必要的jar,这两个资源在jtaresources里-->
<jee:jndi-lookup id="edsDS" jndi-name="java:comp/env/jdbc/edsDS" /> <jee:jndi-lookup id="smDS" jndi-name="java:comp/env/jdbc/smDS" /> <jee:jndi-lookup id="mailDS" jndi-name="java:comp/env/jdbc/mailDS" /> <bean id="springContextHolder" class="com.accu.framework.spring.SpringContextHolder" /> <!-- lishuai acu_scheduleconfig这个表没用了
<bean id="scheduleInitial" class="com.accu.business.eds.schedule.ScheduleInitial" />
--> <!--MyBatis integration with Spring define sqlSessionFactory -->
<bean id="sqlSessionFactory4EDS" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-configuration.xml"/>
<property name="dataSource" ref="edsDS" />
</bean> <bean id="mapperScanner4EDS" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.accu.persistence.eds" />
<property name="sqlSessionFactory" ref="sqlSessionFactory4EDS" />
</bean> <bean id="sqlSessionFactory4SM" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-configuration4sm.xml"/>
<property name="dataSource" ref="smDS" />
</bean> <bean id="mapperScanner4SM" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.accu.persistence.sm" />
<property name="sqlSessionFactory" ref="sqlSessionFactory4SM" />
</bean> <bean id="sqlSessionFactory4Mail" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-configuration4mail.xml"/>
<property name="dataSource" ref="mailDS" />
</bean> <bean id="mapperScanner4Mail" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.accu.persistence.mail" />
<property name="sqlSessionFactory" ref="sqlSessionFactory4Mail" />
</bean> <!-- enable autowire -->
<context:annotation-config />
<tx:annotation-driven transaction-manager="transactionManager" /> <!-- 扫描service -->
<context:component-scan base-package="com.accu.**.impl" /> <!-- transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" /> <tx:annotation-driven transaction-manager="transactionManager" /> <!-- 定时任务 for 子系统更新数据 -->
<bean name="updateSqlTable"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.accu.business.eds.updateSqlTable.updateSqlTableImpl" />
</bean>
<bean name="systemTask"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.accu.business.eds.task.impl.TaskForSubSystemImpl" />
</bean>
<bean name="warningTask"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.accu.business.eds.warning.WarningPushProcessor" />
</bean>
<bean name="reportTask"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.accu.business.dms.task.ReportExportTaskImpl" />
</bean>
<bean name="mailTask"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.accu.controller.eds.report.MailReport" />
</bean>
<!-- 触发器 -->
<bean id="updateSqlTableTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务 -->
<property name="jobDetail" ref="updateSqlTable" />
<!-- 从30秒开始,每1分钟执行一次 -->
<property name="cronExpression" value="30 */1 * * * ?" />
</bean>
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务 -->
<property name="jobDetail" ref="systemTask" />
<!-- 从30秒开始,每1分钟执行一次 -->
<property name="cronExpression" value="30 */1 * * * ?" />
</bean>
<bean id="warningTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务 -->
<property name="jobDetail" ref="warningTask" />
<!-- 从30秒开始,每1分钟执行一次 -->
<property name="cronExpression" value="30 */1 * * * ?" />
</bean>
<bean id="reportTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务 -->
<property name="jobDetail" ref="reportTask" />
<!-- 从30秒开始,每1分钟执行一次 --> <!-- 0 0 */1 * * ? 每小时执行一次 -->
<property name="cronExpression" value="30 */1 * * * ?" />
</bean>
<bean id="mailTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务 -->
<property name="jobDetail" ref="mailTask" />
<!-- 每周一1时执行 -->
<property name="cronExpression" value="0 */5 * ? * *" /> <!-- 0 0 0 ? * MON -->
</bean>
<!-- 调度器 -->
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 触发器列表 -->
<ref bean="cronTrigger" />
<!-- <ref bean="updateSqlTableTrigger" /> -->
<!-- <ref bean="warningTrigger" /> -->
<!-- <ref bean="reportTrigger" /> -->
<!-- <ref bean="mailTrigger" /> -->
</list>
</property>
<!-- <property name="configLocation" value="classpath:quartz.properties" /> -->
</bean>
</beans>
/*----------------------------updateSqlTableImpl.java---------------------------*/
package com.accu.business.eds.updateSqlTable; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.accu.business.pms.measureparamsettting.MeasureDeviceWebService;
import com.accu.common.util.FileUtils;
import com.accu.framework.spring.SpringContextHolder;
import com.accu.framework.webservice.AcuWebServiceClient;
import com.accu.persistence.eds.mapper.MetersMapper;
import com.accu.persistence.eds.mapper.MeasureParamMapper;
import com.accu.persistence.pms.beans.MeasureParam;
import com.accu.persistence.pms.beans.Meters; public class updateSqlTableImpl implements org.quartz.Job{
private static Logger log = Logger.getLogger(updateSqlTableImpl.class); private static List<Meters> theDiffMeterList(List<Meters> a,List<Meters> b,Boolean isAdd){
List<Meters> diff = new ArrayList<Meters>();
List<Meters> tmpa = new ArrayList<Meters>(Arrays.asList(new Meters[a.size()]));
Collections.copy(tmpa, a); List<Meters> tmpb = new ArrayList<Meters>(Arrays.asList(new Meters[b.size()]));
Collections.copy(tmpb, b); if(isAdd){
tmpa.removeAll(tmpb);
for(Meters u : tmpa){
diff.add(u);
}
}else{
tmpb.removeAll(tmpa);
for(Meters u : tmpb){
diff.add(u);
}
} return diff;
} private static List<MeasureParam> theDiffMPList(List<MeasureParam> a,List<MeasureParam> b,Boolean isAdd){
List<MeasureParam> diff = new ArrayList<MeasureParam>();
List<MeasureParam> tmpa = new ArrayList<MeasureParam>(Arrays.asList(new MeasureParam[a.size()]));
Collections.copy(tmpa, a); List<MeasureParam> tmpb = new ArrayList<MeasureParam>(Arrays.asList(new MeasureParam[b.size()]));
Collections.copy(tmpb, b); if(isAdd){
tmpa.removeAll(tmpb);
for(MeasureParam u : tmpa){
diff.add(u);
}
}else{
tmpb.removeAll(tmpa);
for(MeasureParam u : tmpb){
diff.add(u);
}
} return diff;
} public void updateMeterTab(){
String wsPath = FileUtils.getProperties("accuwebservice", "measureDeviceWebService");
AcuWebServiceClient<MeasureDeviceWebService> acu = new AcuWebServiceClient<MeasureDeviceWebService>(wsPath, MeasureDeviceWebService.class);
MeasureDeviceWebService mdw = acu.getServiceClass();
List<Meters> pms_mList = mdw.getAllMeters();
MetersMapper mmapper = SpringContextHolder.getBeanbyClass(MetersMapper.class);
List<Meters> dms_mList = mmapper.queryMeters();
List<Meters> res = theDiffMeterList(pms_mList,dms_mList,true);
List<Meters> res2 = theDiffMeterList(pms_mList,dms_mList,false);
if(res2.size()>0){
for(Meters m1 : res2){
int upd = mmapper.deleteMeter(m1.getGuidmeterid());
log.info(upd > 0 ? "仪表删除成功" : "仪表删除失败");
}
}
if(res.size()>0){
for(Meters m : res){
int add = mmapper.insertMeter(m);
log.info(add > 0 ? "仪表插入成功" : "仪表插入失败");
}
} } public void updateParamTab() {
String wsPath = FileUtils.getProperties("accuwebservice", "measureDeviceWebService");
AcuWebServiceClient<MeasureDeviceWebService> acu = new AcuWebServiceClient<MeasureDeviceWebService>(wsPath, MeasureDeviceWebService.class);
MeasureDeviceWebService mdw = acu.getServiceClass();
List<MeasureParam> pms_mpList = mdw.getAllMeasureParam();
MeasureParamMapper measureParamMapper = SpringContextHolder.getBeanbyClass(MeasureParamMapper.class);
List<MeasureParam> dms_mpList = measureParamMapper.queryMeasureParams();
List<MeasureParam> res = theDiffMPList(pms_mpList,dms_mpList,true);
List<MeasureParam> res2 = theDiffMPList(pms_mpList,dms_mpList,false);
if(res2.size()>0){
for(MeasureParam m1 : res2){
int del = measureParamMapper.deleteMeasureParam(m1.getGuidMeasureParamId());
log.info(del > 0 ? "测量参数删除成功" : "测量参数删除失败");
}
}
if(res.size()>0){
for(MeasureParam m : res){
int add = measureParamMapper.insertMeasureParam(m);
log.info(add > 0 ? "测量参数插入成功" : "测量参数插入失败");
}
}
} @Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
updateMeterTab();
updateParamTab();
} }

  

定时任务&&找出两个list的不同的更多相关文章

  1. Java - Collection 高效的找出两个List中的不同元素

    如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合 public ...

  2. python——快速找出两个电子表中数据的差异

    最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的 ...

  3. Java Collection - 003 高效的找出两个List中的不同元素

    如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合 public ...

  4. js-FCC算法Smallest Common Multiple。找出两个参数和它们之间的连续数字的最小公倍数。

    存档. 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. function smallestCommons(arr) { //分解质因数法,分解为若干个质数相乘 var arrratio=[ ...

  5. leetcode 4 : Median of Two Sorted Arrays 找出两个数组的中位数

    题目: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the ...

  6. 基于visual Studio2013解决面试题之0608找出两个只出现一次的数

     题目

  7. [PHP] 算法-找出两个链表的第一个公共结点的PHP实现

    输入两个链表,找出它们的第一个公共结点 1.两个单链表,有公共结点,那么必然,尾部公用 2.找出链表1的长度,找出链表2的长度,长的链表减去短的链表得出一个n值 3.长的链表先走n步,两个链表再同时移 ...

  8. leetcode实践:找出两个有序数组的中位数

    题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 代码实现 package com. ...

  9. 海量数据处理面试题(1) 找出两文件种包含的相同的url

    问题:给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 分析:50亿个url,每个url64字节,就是320G,显然是无法一次读入内存 ...

随机推荐

  1. Luogu-3250 [BJOI2017]魔法咒语(AC自动机,矩阵快速幂)

    Luogu-3250 [BJOI2017]魔法咒语(AC自动机,矩阵快速幂) 题目链接 题解: 多串匹配问题,很容易想到是AC自动机 先构建忌讳词语的AC自动机,构建时顺便记录一下这个点以及它的所有后 ...

  2. JavaScript字符串转换为变量名

    1.将一个字符串转换为变量名 [javascript] view plain copy print? function string_to_name(string){ let _name = 'var ...

  3. C#470多例winform 界面特效的源码

    一共470多例winform 界面特效的源码. 窗体与界面设计... 9 实例001  带历史信息的菜单    10 实例002  菜单动态合并    12 实例003  像开始菜单一样漂亮的菜单.. ...

  4. dll隐式链接延迟加载

    dll隐式链接延迟加载 程序隐式链接dll后,启动程序将自动加载dll,查找路径依次是: 1:当前文件路径: 2:使用SetDLLDirectory设置的路径: 3:系统路径,system32文件夹, ...

  5. css tips —— 可见性对图片加载的影响

    如果是<img />标签,无论是display: none:还是visibility: hidden;都会加载图片: 但是如果是背景图片即background-image: url(xxx ...

  6. python学习笔记(控制语句)

    博主平时学python的时候.大多是复制网上别人现成的进行改动实现自己的测试的要求 所有python基础语法其实掌握的很差 本来想优化下接口脚本实现.发现基础的循环控制语句都不知道怎么写 所以准备整理 ...

  7. Android DDMS ADB启动失败错误解决!

    ADB server didn't ACK && make sure the plugin is properly configured! adb启动失败一般是端口被占用! 解决方法和 ...

  8. angular-messages.js信息验证的使用

    ngMessages(1.3+) 众所周知,表单和验证是Angular中复杂的组件之一.上面的例子不是特别好,不简洁.在Angular 1.3发布前,表单验证必须以这种方式编写.然而在发布的Angul ...

  9. Ant Design

    https://ant.design/components/form-cn/    (Ant Design of React 中文网) 1.Ant Design of react (相关资料) htt ...

  10. C++中static与const成员

    一.static成员 (1)static数据成员 static数据成员的创建是为了对象之间的共享和沟通,具有以下特点: 1.1 static数据成员属于类,只占一份空间(不像普通数据成员每个对象中都有 ...