package com.zy.ints.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.zy.ints.entity.IoComplete; import com.zy.ints.entity.StockSync; import com.zy.ints.service.IoCompleteService; import com.zy.ints.service.StockSyncService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; /** * erp任务控制器 * Created by vincent on 2020/11/27 */ @Slf4j @Component public class ERPApiScheduler { @Autowired private IoCompleteService ioCompleteService; @Autowired private StockSyncService stockSyncService; /** * ERP接口是否启用 */ @Value("${erp.enabled}") private Boolean erpEnabled; @Autowired private JdbcTemplate jdbcTemplate; /** * 提取回报档资料,上报ERP处理 */ @Scheduled(cron = "0/3 * * * * ? ") public void ioCompleteExecute(){ if(!erpEnabled) return; Date now = new Date(); boolean res = false; String errMsg = "";//上报返回异常信息 Wrapper wrapper = new EntityWrapper().ne("upd_status",1).last("order by upd_status,modi_time asc"); List ioCompletes = ioCompleteService.selectList(wrapper); // IoComplete ioComplete = ioCompleteService.selectOne(wrapper); if(null != ioCompletes && ioCompletes.size() > 0){ IoComplete ioComplete = ioCompletes.get(0); ////////////上报ERP接口 ///////////调ERP接口后,需要插入接口日志表ints_erpreq_log if(res){ ioComplete.setUpdStatus(1); ioComplete.setModiTime(now); ioCompleteService.updateById(ioComplete); } else { ioComplete.setUpdStatus(2); ioComplete.setErrorMemo(errMsg); ioComplete.setModiTime(now); ioCompleteService.updateById(ioComplete); } } } /** * 提取库存同步表资料,上报ERP库存同步 */ @Scheduled(cron = "0/3 * * * * ? ") public void stockSyncExecute() { if (!erpEnabled) return; Date now = new Date(); boolean res = false; String errMsg = "";//上报返回异常信息 String sql = "select top 10 mat_no as matNo,mat_name as matName,qty from ints_stock_sync where upd_status<>1 order by upd_status,modi_time asc"; List> maps = jdbcTemplate.queryForList(sql); if(null != maps){ for (Map map: maps) { StockSync stockSync = Cools.conver(map, StockSync.class); ////////////上报ERP接口 ///////////调ERP接口后,需要插入接口日志表ints_erpreq_log if (res) { stockSync.setUpdStatus(1); stockSync.setModiTime(now); stockSyncService.update(stockSync,new EntityWrapper().eq("mat_no",stockSync.getMatNo())); } else { stockSync.setUpdStatus(2); stockSync.setErrorMemo(errMsg); stockSync.setModiTime(now); stockSyncService.update(stockSync,new EntityWrapper().eq("mat_no",stockSync.getMatNo())); } } } } }