package com.ld.igds.timer; import com.bstek.bdf2.core.model.DefaultCompany; import com.ld.igds.common.CoreCommonService; import com.ld.igds.inout.dto.InoutData; import com.ld.igds.inout.dto.InoutParam; import com.ld.igds.inout.service.InoutService; import com.ld.igds.m.service.InoutCommonService; import com.ld.igds.models.*; import com.ld.igds.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @Desc: 出入库定时任务。 1、通知单完成量统计 2、出入库库存管理统计 * @author: Andy * @update-time: 2022/11/22 */ @Slf4j @Component(InoutScheduled.BEAN_ID) public class InoutScheduled { public static final String BEAN_ID = "inout.inoutScheduled"; @Resource private InoutCommonService inoutCommonService; @Resource private InoutService inoutService; @Resource private CoreCommonService commonService; /** * 每天晚上11点进行更新未完成出入库通知单的完成量 */ @Scheduled(cron = "0 0 23 * * ?") public void scheduled1() { List listCompany = commonService.getCompanyList(); if (null == listCompany) return; // 获取3天内的出入库记录,如果有记录则执行,如果没有,则无需执行 Date start = DateUtil.getNewByDay(null, -3); InoutParam param; List listRecord; for (DefaultCompany company : listCompany) { param = new InoutParam(); param.setStart(start); param.setCompanyId(company.getId()); listRecord = inoutService.listRecordData(param); //根据出入库信息同步通知单完成量 noticeCompleteExe(company.getId(), listRecord); } } /** * 同步通知单完成量,根据近期出入库记录,如果无近期出入库记录,则表示无出入库作业,取消执行 * * @param companyId * @param listRecord */ public void noticeCompleteExe(String companyId, List listRecord) { log.info("----------系统定时更新出入库通知单完成量----------"); if (null == listRecord || listRecord.isEmpty()) { log.info("-----------系统自动同步库存,近期无出入库记录,取消同步通知单完成量……{}", companyId); return; } //TODO 待优化 // 获取所有未完成状态的出库通知单 List noticeOutList = inoutCommonService.getUnComNoticeOut(companyId); // 获取所有未完成状态的入库通知单 List noticeInList = inoutCommonService.getUnComNoticeIn(companyId); String deptId = noticeInList.get(0).getDeptId(); // 更新入库通知单完成量 inoutCommonService.updateSumNoticeIn(deptId, noticeInList); // 更新出库通知单完成量 inoutCommonService.updateSumNoticeOut(deptId,noticeOutList); } }