You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/task/IoSplitFifoCodeTask.java

127 lines
5.6 KiB
Java

package com.glxp.api.task;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.dao.basic.UdiRelevanceDao;
import com.glxp.api.dao.basic.YbNotCodeMapper;
import com.glxp.api.dao.inout.IoCodeLostMapper;
import com.glxp.api.dao.inout.IoSplitFifoCodeMapper;
import com.glxp.api.dao.schedule.ScheduledDao;
import com.glxp.api.dao.system.ThrYbSetupMapper;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.basic.YbNotCode;
import com.glxp.api.entity.collect.IoCollectCodeBackup;
import com.glxp.api.entity.collect.IoCollectOrderBiz;
import com.glxp.api.entity.inout.IoCodeEntity;
import com.glxp.api.entity.inout.IoCodeLostEntity;
import com.glxp.api.entity.inout.IoSplitFifoCodeEntity;
import com.glxp.api.entity.system.ScheduledEntity;
import com.glxp.api.entity.system.ThrYbSetup;
import com.glxp.api.http.sync.SpGetHttpClient;
import com.glxp.api.req.alihealth.AlihealthYljgCodedetailReqeust;
import com.glxp.api.req.system.ScheduledRequest;
import com.glxp.api.service.collect.IoCollectCodeBackService;
import com.glxp.api.service.inout.impl.IoCodeLostServiceImpl;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Component
@EnableScheduling
@Slf4j
public class IoSplitFifoCodeTask implements SchedulingConfigurer {
@Resource
private ScheduledDao scheduledDao;
@Resource
private IoSplitFifoCodeMapper ioSplitFifoCodeMapper;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(() -> process(),
triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("IoSplitFifoCodeTask");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 0 5 * * ?";
if (cron.isEmpty()) {
log.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
@Resource
private SpGetHttpClient spGetHttp;
@Resource
private IoCodeLostMapper ioCodeLostMapper;
private void process() {
List<IoSplitFifoCodeEntity> list = ioSplitFifoCodeMapper.selectList(
new QueryWrapper<IoSplitFifoCodeEntity>()
.isNull("batchNo")
.select("code")
.last("limit 1000")
);
if (CollUtil.isNotEmpty(list)) {
int chunkSize = 30;
List<List<IoSplitFifoCodeEntity>> ioSplitFifoCodeChunks = Lists.partition(list, chunkSize);
for (List<IoSplitFifoCodeEntity> ioSplitFifoCodeChunk : ioSplitFifoCodeChunks) {
List<String> codeList = new ArrayList<>();
for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : ioSplitFifoCodeChunk) {
codeList.add(ioSplitFifoCodeEntity.getCode());
}
AlihealthYljgCodedetailReqeust alihealthYljgCodedetailReqeust = new AlihealthYljgCodedetailReqeust();
alihealthYljgCodedetailReqeust.setCodes(String.join(",", codeList));
BaseResponse<List<IoCodeLostEntity>> baseResponse = spGetHttp.codedetail(alihealthYljgCodedetailReqeust);
List<IoCodeLostEntity> ioCodeLostEntityList = baseResponse.getData();
if (CollUtil.isNotEmpty(ioCodeLostEntityList)) {
for (IoCodeLostEntity ioCodeLostEntity : ioCodeLostEntityList) {
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = new IoSplitFifoCodeEntity();
ioSplitFifoCodeEntity.setBatchNo(ioCodeLostEntity.getBatchNo());
ioSplitFifoCodeEntity.setProduceDate(ioCodeLostEntity.getProduceDate());
ioSplitFifoCodeEntity.setExpireDate(ioCodeLostEntity.getExpireDate());
ioSplitFifoCodeMapper.update(ioSplitFifoCodeEntity,
new QueryWrapper<IoSplitFifoCodeEntity>().eq("code",ioCodeLostEntity.getCode())
);
IoCodeLostEntity ioCodeLostEntityNew = ioCodeLostMapper.selectOne(
new QueryWrapper<IoCodeLostEntity>()
.eq("code", ioCodeLostEntity.getCode())
);
if (ioCodeLostEntityNew != null) {
ioCodeLostMapper.update(ioCodeLostEntity,
new QueryWrapper<IoCodeLostEntity>()
.eq("code", ioCodeLostEntity.getCode())
);
} else {
ioCodeLostMapper.insert(ioCodeLostEntity);
}
}
}
}
}
}
}