# HtScheduledTask 定时任务说明

ScheduledTask 定时任务案例;
Author wangdongyang@expservice.com.cn

# 前端示例

手动定时任务
<!-- 注:定时任务:需配置手动和自动    手动定时任务:配置按钮 自动定时任务:配置sys_job表 -->
<template>
  <div>
    <ht-button @click="scheduledSync">手动定时任务</ht-button>  
  </div>
</template>
<script>
// import { scheduledSync } from '@/api/oem/oms/....';
export default {
  // name: 'JcsjJobIndex',
  methods: {
    /**
     * @todo: scheduledSync手动调用定时任务方法
     * @author: wangdongyang@expservice.com.cn
     * @Date: 2023-05-31 11:35:58
     */
    async scheduledSync() {
      // 注:实际开发没有this.$notify.message('主动按钮调用')
      this.$notify.message('主动按钮调用');
      // await this.$crud.submit(scheduledSync, {});
    }
  }
};
</script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Expand Copy

# 后端示例

  • JcsjJobController
  /**
   * @remark: 定时任务调用
   * @param  
   * @return: void 
   * @author: wangdongyang
   * @date: 2023/5/31 16:02
   * @version: 1.0.1 
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/31  wangdongyang   v1.0.1         init
   */
  @PostMapping(value = "/scheduledSync")
  public void scheduledSync()
  {
    ScheduledSync scheduledSync = new ScheduledSync();
    // 注:类ScheduledSync 必须写在job目录下
    scheduledSync.scheduledJob();
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • Job
/**
 * @version v1.0.1
 * @copyright: Copyright (c)
 * @remark: 定时任务
 * @author:wangdongyang
 * @date:2023/5/31 11:25
 */
@Service
public class ScheduledSync
{
  @Autowired
  private PlatformTransactionManager txManager;

  @Resource
  private CsOemMapper csOemMapper;

  // 注:Transactional有错误信息回滚sql
  @Transactional(rollbackFor = Exception.class)
  public void scheduledJob()
  {
    txManager = (PlatformTransactionManager) SpringContextUtils.getBean("txManager");
    // 注:实例本地service
    csOemMapper = SpringContextUtils.getBean(CsOemMapper.class);
    // 注:DefaultTransactionDefinition声明事务
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
    // 注:发生错误时回退
    TransactionStatus status = txManager.getTransaction(def);
    Connection conn = null;
    try
    {
      // 注:加载驱动程序
      Class.forName(DbConfig.DBDRIVER);
      // 注:连接数据库   WmsURL数据库地址   WmsUSER数据库登录用户名  WmsPASSWORD数据库用户密码
      conn = DriverManager.getConnection(DbConfig.WmsURL, DbConfig.WmsUSER, DbConfig.WmsPASSWORD);
      // 注:实例化Statement对象
      Statement stmt = conn.createStatement();

      String sql = "select * from wms.V2_Gif_StockStat";
      ResultSet rs = stmt.executeQuery(sql);

      while (rs.next())
      {
        Map<String, Object> map = csOemMapper.searchMaterialId(rs.getString("material_id"));
        if (StringUtils.isEmpty(map))
        {
          CsOemPO csOemPO = new CsOemPO();
          csOemPO.setMaterialCode(rs.getString("material_id"));
          csOemPO.setMaterialName(rs.getString("material_name"));
          csOemPO.setMaterialType(Integer.valueOf(DicConstant.WLLX_02));
          csOemMapper.save(csOemPO);
        }
      }
      stmt.close();
      txManager.commit(status);
    } catch (Exception e)
    {
      {
        txManager.rollback(status);
        try
        {
          e.printStackTrace();
        } catch (Exception exception)
        {
        }
      } finally
      {
        try
        {
          if (conn != null)
            conn.close();
        } catch (Exception e)
        {
        }
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

# 版本

  • v1.0.0