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<DefaultCompany> listCompany = commonService.getCompanyList();
|
if (null == listCompany)
|
return;
|
|
// 获取3天内的出入库记录,如果有记录则执行,如果没有,则无需执行
|
Date start = DateUtil.getNewByDay(null, -3);
|
InoutParam param;
|
List<InoutData> 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<InoutData> listRecord) {
|
log.info("----------系统定时更新出入库通知单完成量----------");
|
|
if (null == listRecord || listRecord.isEmpty()) {
|
log.info("-----------系统自动同步库存,近期无出入库记录,取消同步通知单完成量……{}", companyId);
|
return;
|
}
|
|
//TODO 待优化
|
|
// 获取所有未完成状态的出库通知单
|
List<InoutNoticeOut> noticeOutList = inoutCommonService.getUnComNoticeOut(companyId);
|
|
// 获取所有未完成状态的入库通知单
|
List<InoutNoticeIn> noticeInList = inoutCommonService.getUnComNoticeIn(companyId);
|
|
String deptId = noticeInList.get(0).getDeptId();
|
|
// 更新入库通知单完成量
|
inoutCommonService.updateSumNoticeIn(deptId,
|
noticeInList);
|
|
// 更新出库通知单完成量
|
inoutCommonService.updateSumNoticeOut(deptId,noticeOutList);
|
}
|
|
}
|