From 7d4811ebb3336b290e6e9110a80d3ad31280320c Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Sun, 29 Sep 2024 17:07:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8B=86=E5=8C=85=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8D=9F=E8=80=97=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/entity/basic/UdiRelevanceEntity.java | 6 ++ .../collect/IoCollectOrderCodeAuto.java | 4 +- .../api/entity/inout/IoSplitCodeEntity.java | 16 +++- .../entity/inout/IoSplitFifoCodeEntity.java | 2 +- .../glxp/api/req/basic/AddProductRequest.java | 7 ++ .../api/res/basic/UdiRelevanceResponse.java | 8 ++ .../api/service/basic/UdiProductService.java | 2 + .../collect/IoSplitDesOrderService.java | 6 +- .../api/service/inout/IoSplitCodeService.java | 90 ++++++++++++++++++- .../glxp/api/task/AsyncUnpackExpireTask.java | 52 +++++++++++ 10 files changed, 185 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/glxp/api/task/AsyncUnpackExpireTask.java diff --git a/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java b/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java index b37cf0f34..dbe5db069 100644 --- a/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java @@ -305,4 +305,10 @@ public class UdiRelevanceEntity { private Integer useMaxLevel; + /** + * 拆包后可用时长(小时) + */ + @TableField(value = "unpackUseTime") + private Integer unpackUseTime; + } diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderCodeAuto.java b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderCodeAuto.java index 933a8db0e..f38d14f15 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderCodeAuto.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderCodeAuto.java @@ -27,14 +27,14 @@ import lombok.NoArgsConstructor; public class IoCollectOrderCodeAuto implements Serializable { @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "") - private Integer id; + private Long id; /** * 拆零表码ID */ @TableField(value = "codeIdFk") @ApiModelProperty(value = "拆零表码ID") - private Integer codeIdFk; + private Long codeIdFk; /** * udi码、追溯码 diff --git a/src/main/java/com/glxp/api/entity/inout/IoSplitCodeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoSplitCodeEntity.java index 3b9f2a6bb..aec43813e 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoSplitCodeEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoSplitCodeEntity.java @@ -27,7 +27,7 @@ import lombok.NoArgsConstructor; public class IoSplitCodeEntity implements Serializable { @TableId(value = "id", type = IdType.INPUT) @ApiModelProperty(value = "") - private Integer id; + private Long id; /** * UDI码 @@ -176,6 +176,20 @@ public class IoSplitCodeEntity implements Serializable { @ApiModelProperty(value = "创建日期") private Date createTime; + /** + * 拆包日期 + */ + @TableField(value = "unpackTime") + @ApiModelProperty(value = "拆包日期") + private Date unpackTime; + + /** + * 拆包失效日期 + */ + @TableField(value = "createTime") + @ApiModelProperty(value = "拆包失效日期") + private Date unpackExpireTime; + /** * 创建人 */ diff --git a/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java index 6c22c81e3..d0664bb2d 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java @@ -27,7 +27,7 @@ import lombok.NoArgsConstructor; public class IoSplitFifoCodeEntity implements Serializable { @TableId(value = "id", type = IdType.INPUT) @ApiModelProperty(value = "") - private Integer id; + private Long id; /** * UDI码/药品追溯码 diff --git a/src/main/java/com/glxp/api/req/basic/AddProductRequest.java b/src/main/java/com/glxp/api/req/basic/AddProductRequest.java index d5aeeaba8..69606537d 100644 --- a/src/main/java/com/glxp/api/req/basic/AddProductRequest.java +++ b/src/main/java/com/glxp/api/req/basic/AddProductRequest.java @@ -241,6 +241,13 @@ public class AddProductRequest { */ @TableField(value = "medicareType") private Integer medicareType; + + /** + * 拆包后可用时长(小时) + */ + @TableField(value = "unpackUseTime") + private Integer unpackUseTime; + private Integer majorStatus; /** diff --git a/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java b/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java index e766d999e..dff673ab6 100644 --- a/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java +++ b/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java @@ -322,4 +322,12 @@ public class UdiRelevanceResponse { private Integer distributeLevel; private Integer useLevel; + + + /** + * 拆包后可用时长(小时) + */ + @TableField(value = "unpackUseTime") + private Integer unpackUseTime; + } diff --git a/src/main/java/com/glxp/api/service/basic/UdiProductService.java b/src/main/java/com/glxp/api/service/basic/UdiProductService.java index 2aca941fc..bded86f20 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiProductService.java @@ -327,6 +327,7 @@ public class UdiProductService extends ServiceImpl filterList(IoSplitCodeRequest splitCodeRequest) { if (splitCodeRequest == null) { @@ -235,7 +246,7 @@ public class IoSplitCodeService extends ServiceImpl removeIds = new ArrayList<>(); + List removeIds = new ArrayList<>(); for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) { // UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(collectOrderBiz.getRelId()); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); @@ -275,6 +286,7 @@ public class IoSplitCodeService extends ServiceImpl addSplitCodeEntities = new ArrayList<>(); - List removeIds = new ArrayList<>(); + List removeIds = new ArrayList<>(); for (IoSplitFifoCodeEntity splitFifoCodeEntity : splitFifoCodeEntities) { IoSplitCodeEntity splitCodeEntity = new IoSplitCodeEntity(); BeanUtils.copyProperties(splitFifoCodeEntity, splitCodeEntity); @@ -429,6 +441,7 @@ public class IoSplitCodeService extends ServiceImpl lqw = new LambdaQueryWrapper<>(); + Date now = new Date(); + lqw.lt(IoSplitCodeEntity::getUnpackExpireTime,now); + + List ioSplitCodeEntities = splitCodeMapper.selectList(lqw); + if (CollUtil.isNotEmpty(ioSplitCodeEntities)){ + //进行损耗出库 + IoSplitDesOrder collectOrder; + List splitDesOrderDetails = new ArrayList<>(); + List removeByIds = new ArrayList<>(); + collectOrder = IoSplitDesOrder.builder() + .id(IdUtil.getSnowflakeNextId()) + .billNo(gennerOrderUtils.createWdOrderNo(new OrderNoTypeBean(Constant.SPLIT_DES_ORDER, "yyyyMMdd"))) + .busType(null) + .workPlaceCode(null) + .createTime(new Date()) + .billTime(new Date()) + .remark(null) + .status(2) + .createUser("1") + .updateTime(new Date()) + .updateUser("1") + .build(); + splitDesOrderService.save(collectOrder); + + ioSplitCodeEntities.forEach( splitCodeEntity -> { + //损耗详细表 + IoSplitDesOrderDetail splitDesOrderDetail = IoSplitDesOrderDetail.builder() + .id(IdUtil.getSnowflakeNextId()) + .workPlaceCode(collectOrder.getWorkPlaceCode()) + .orderIdFk(collectOrder.getBillNo()) + .relId(splitCodeEntity.getRelId()) + .batchNo(splitCodeEntity.getBatchNo()) + .produceDate(splitCodeEntity.getProduceDate()) + .expireDate(splitCodeEntity.getExpireDate()) + .supId(splitCodeEntity.getSupId()) + .count(splitCodeEntity.getRemainCount()) + .reCount(splitCodeEntity.getRemainCount()) + .createTime(new Date()) + .updateTime(new Date()) + .remark("").build(); + splitDesOrderDetails.add(splitDesOrderDetail); + removeByIds.add(splitCodeEntity.getId()); + }); + + if (removeByIds.size() > 0) { + this.removeByIds(removeByIds); + } + if (splitDesOrderDetails.size() > 0) { + splitDesOrderDetailService.saveBatch(splitDesOrderDetails); + } + } + } } diff --git a/src/main/java/com/glxp/api/task/AsyncUnpackExpireTask.java b/src/main/java/com/glxp/api/task/AsyncUnpackExpireTask.java new file mode 100644 index 000000000..24b4a0948 --- /dev/null +++ b/src/main/java/com/glxp/api/task/AsyncUnpackExpireTask.java @@ -0,0 +1,52 @@ +package com.glxp.api.task; + +import com.glxp.api.dao.schedule.ScheduledDao; +import com.glxp.api.entity.system.ScheduledEntity; +import com.glxp.api.idc.service.IdcService; +import com.glxp.api.req.system.ScheduledRequest; +import com.glxp.api.service.inout.IoSplitCodeService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.support.CronTrigger; + +import javax.annotation.Resource; + +// +//@Component +//@EnableScheduling +public class AsyncUnpackExpireTask implements SchedulingConfigurer { + + final Logger logger = LoggerFactory.getLogger(AsyncUnpackExpireTask.class); + + @Resource + private ScheduledDao scheduledDao; + + @Resource + IoSplitCodeService splitCodeService; + + @Override + public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { + scheduledTaskRegistrar.addTriggerTask(() -> process(), + triggerContext -> { + ScheduledRequest scheduledRequest = new ScheduledRequest(); + scheduledRequest.setCronName("asyncUnpackExpireTask"); + logger.info("asyncUnpackExpireTask----------------"); + ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); + String cron = scheduledEntity!=null ? scheduledEntity.getCron() : "0 */2 * * * ?"; + + if (cron.isEmpty()) { + logger.error("cron is null"); + } + logger.info("asyncUnpackExpireTask----------------"+cron); + return new CronTrigger(cron).nextExecutionTime(triggerContext); + }); + } + + private void process() { + logger.info("asyncUnpackExpireTask----process------------"); + splitCodeService.asyncUnpackExpireTask(); + } + +}