package com.ld.igds.timer; import com.bstek.bdf2.core.model.DefaultCompany; import com.bstek.bdf2.core.model.DefaultDept; import com.ld.igds.common.CoreCommonService; import com.ld.igds.m.dto.AppointParam; import com.ld.igds.m.view.AppointPR; import com.ld.igds.sys.service.SysDeptService; import com.ld.igds.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * 预约信息定时管理 * 1、出入库预约信息 * 2、就餐预约信息 * * @author: czt * @update-time: 2023-04-13 09:20 */ @Slf4j @Component(AppointScheduled.BEAN_ID) public class AppointScheduled { public static final String BEAN_ID = "basic.appointScheduled"; @Resource private CoreCommonService commonService; @Autowired private SysDeptService sysDeptService; @Autowired private AppointPR appointPR; /** * 每天晚上11:10分同步第二天的预约信息 */ @Scheduled(cron = "0 10 23 * * ?") public void scheduled() { log.info("----------系统自动同步预约信息----------"); List listCompany = commonService.getCompanyList(); if (null == listCompany) { return; } List list; AppointParam param = new AppointParam(); param.setStartTime(new Date()); param.setEndTime(DateUtil.getNewByDay(new Date(), 1)); for (DefaultCompany company : listCompany) { list = sysDeptService.getCacheDept(company.getId()); if(null == list || list.isEmpty()){ log.warn("----------未获取到该组织{}下库区信息,预约信息不同步----------", company.getId()); continue; } //同步出入库预约信息 syncInoutAppoint(list, param); //同步就餐预约信息 syncEatAppoint(list, param); } } /** * 同步出入库预约信息 */ private void syncInoutAppoint(List list, AppointParam param) { String s; //遍历获取库区的出入库预约信息 for (DefaultDept dept : list) { param.setDeptId(dept.getId()); param.setCompanyId(dept.getCompanyId()); s = appointPR.syncInout(param); log.warn("----------库区={}出入库预约信息同步结果={}----------", dept.getName(), s); } } /** * 同步就餐预约信息 */ private void syncEatAppoint(List list, AppointParam param) { //遍历获取库区的出入库预约信息 for (DefaultDept dept : list) { param.setDeptId(dept.getId()); param.setCompanyId(dept.getCompanyId()); //TODO 就餐预约同步 } } }