From 69ea8ce63f00d0580db663342ef1ea555273d30f Mon Sep 17 00:00:00 2001 From: qiuyt Date: Wed, 26 Mar 2025 17:59:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E8=8E=B7=E5=8F=96=E5=B7=A5?= =?UTF-8?q?=E4=BD=8D=E5=BA=93=E5=AD=98=E7=A0=81=E4=B8=89=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/http/sync/SpGetHttpClient.java | 16 +++ .../api/req/basic/FilterUdiRelRequest.java | 1 + .../glxp/api/task/IoSplitFifoCodeTask.java | 126 ++++++++++++++++++ src/main/resources/schemas/schema_v2.4.sql | 2 + 4 files changed, 145 insertions(+) create mode 100644 src/main/java/com/glxp/api/task/IoSplitFifoCodeTask.java diff --git a/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java index 6361a6369..5c9cc573f 100644 --- a/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java +++ b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java @@ -11,6 +11,7 @@ import com.glxp.api.constant.BasicExportTypeEnum; import com.glxp.api.constant.SyncDelType; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; +import com.glxp.api.entity.inout.IoCodeLostEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.IOOrderStatusEntity; @@ -21,6 +22,7 @@ import com.glxp.api.entity.thrsys.CodeRel; import com.glxp.api.entity.thrsys.ThirdAliDrug; import com.glxp.api.idc.service.FileService; import com.glxp.api.req.alihealth.AlihealthRelCodeInsertReqeust; +import com.glxp.api.req.alihealth.AlihealthYljgCodedetailReqeust; import com.glxp.api.req.alihealth.local.AliBillsDisposeReqeust; import com.glxp.api.req.alihealth.local.AlihealthGetRelCodeReqeust; import com.glxp.api.req.alihealth.local.AlihealthThirdAliDrugInsertReqeust; @@ -746,4 +748,18 @@ public class SpGetHttpClient { } return response; } + + public BaseResponse> codedetail(AlihealthYljgCodedetailReqeust alihealthYljgCodedetailReqeust) { + String json = JSONUtil.toJsonStr(alihealthYljgCodedetailReqeust); + String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/spms/alihealth/codedetail", json, buildHeader()); + BaseResponse> response = + JSONObject.parseObject(result, new TypeReference>>() { + + }); + + if(response == null){ + return ResultVOUtils.error("访问供应商平台访问不到"); + } + return response; + } } diff --git a/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java b/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java index ec97ae8e7..c3b3c2c50 100644 --- a/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java +++ b/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java @@ -127,5 +127,6 @@ public class FilterUdiRelRequest extends ListPageRequest { private String keyWords; private List filterNameCodes; + private String noCodeSelect; } diff --git a/src/main/java/com/glxp/api/task/IoSplitFifoCodeTask.java b/src/main/java/com/glxp/api/task/IoSplitFifoCodeTask.java new file mode 100644 index 000000000..7a005655b --- /dev/null +++ b/src/main/java/com/glxp/api/task/IoSplitFifoCodeTask.java @@ -0,0 +1,126 @@ +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 list = ioSplitFifoCodeMapper.selectList( + new QueryWrapper() + .isNull("batchNo") + .select("code") + .last("limit 1000") + ); + if (CollUtil.isNotEmpty(list)) { + int chunkSize = 30; + List> ioSplitFifoCodeChunks = Lists.partition(list, chunkSize); + + for (List ioSplitFifoCodeChunk : ioSplitFifoCodeChunks) { + List codeList = new ArrayList<>(); + for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : ioSplitFifoCodeChunk) { + codeList.add(ioSplitFifoCodeEntity.getCode()); + + + } + AlihealthYljgCodedetailReqeust alihealthYljgCodedetailReqeust = new AlihealthYljgCodedetailReqeust(); + alihealthYljgCodedetailReqeust.setCodes(String.join(",", codeList)); + + BaseResponse> baseResponse = spGetHttp.codedetail(alihealthYljgCodedetailReqeust); + List 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().eq("code",ioCodeLostEntity.getCode()) + ); + IoCodeLostEntity ioCodeLostEntityNew = ioCodeLostMapper.selectOne( + new QueryWrapper() + .eq("code", ioCodeLostEntity.getCode()) + ); + if (ioCodeLostEntityNew != null) { + + ioCodeLostMapper.update(ioCodeLostEntity, + new QueryWrapper() + .eq("code", ioCodeLostEntity.getCode()) + ); + } else { + ioCodeLostMapper.insert(ioCodeLostEntity); + } + } + + + } + + } + + + } + } +} diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 2817ead9b..d366eca6e 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -5491,3 +5491,5 @@ CREATE TABLE IF NOT EXISTS `io_collect_set_bustype` ( INSERT IGNORE INTO sys_scheduled(`id`, `cronName`, `cron`, `customerId`, `remark`) VALUES (3000, 'notCodeTask', '0 */20 * * * ?', NULL, '定时更新无码库'); +INSERT IGNORE INTO sys_scheduled(`id`, `cronName`, `cron`, `customerId`, `remark`) +VALUES (3001, 'ioSplitFifoCodeTask', '0 */30 * * * ?', NULL, '工位库存定时补齐码的三期');