diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/param/SystemParamConfigController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/param/SystemParamConfigController.java index 2b1fe39..d83dc42 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/param/SystemParamConfigController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/param/SystemParamConfigController.java @@ -119,8 +119,18 @@ public class SystemParamConfigController { } catch (Exception e) { return ResultVOUtils.error(500, "格式错误!"); } + } else if (systemParamConfigSaveRequest.getParamKey().equals("supplement_order_interval")) { + try { + int time = Integer.parseInt(systemParamConfigSaveRequest.getParamValue()); + String cornStr = CronUtils.parseMinuteIntervel(time); + ScheduledEntity scheduledEntity = new ScheduledEntity(); + scheduledEntity.setCron(cornStr); + scheduledEntity.setCronName("supplementOrderTask"); + scheduledDao.modifyScheduled(scheduledEntity); + } catch (Exception e) { + return ResultVOUtils.error(500, "格式错误!"); + } } - return ResultVOUtils.success("修改成功"); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java index 3cb8583..e6140a0 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java @@ -34,4 +34,11 @@ public interface StockOrderDao { void updateSupplementNoByBillNo(@Param("billNo") String billNo, @Param("supplementOrderNo") String supplementOrderNo); + /** + * 查询补单单号为空的单据号 + * + * @return + */ + List selectSupplementOrderList(); + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java index b7c3f43..8b046cf 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java @@ -1,12 +1,12 @@ package com.glxp.sale.admin.service.inout; -import java.util.List; - import com.glxp.sale.admin.entity.inout.StockOrderEntity; import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; +import java.util.List; + public interface StockOrderService { List listStockOrders(StockOrderQueryRequest stockOrderQueryRequest); @@ -35,4 +35,12 @@ public interface StockOrderService { List listOrderPrint(String orderId); + + /** + * 查询补单单号列表 + * + * @return + */ + List getSupplementOrderBillNoList(); + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java index 661ddec..7d8d96e 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java @@ -1,12 +1,5 @@ package com.glxp.sale.admin.service.inout.impl; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - import com.github.pagehelper.PageHelper; import com.glxp.sale.admin.dao.inout.StockOrderDao; import com.glxp.sale.admin.entity.inout.StockOrderEntity; @@ -14,6 +7,11 @@ import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; import com.glxp.sale.admin.service.inout.StockOrderService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; @Service public class StockOrderServiceImpl implements StockOrderService { @@ -109,4 +107,9 @@ public class StockOrderServiceImpl implements StockOrderService { return stockOrderDao.listOrderPrint(stockOrderFilterRequest); } + @Override + public List getSupplementOrderBillNoList() { + return stockOrderDao.selectSupplementOrderList(); + } + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/thread/SupplementOrderTask.java b/api-admin/src/main/java/com/glxp/sale/admin/thread/SupplementOrderTask.java new file mode 100644 index 0000000..d204339 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/thread/SupplementOrderTask.java @@ -0,0 +1,72 @@ +package com.glxp.sale.admin.thread; + +import cn.hutool.core.collection.CollUtil; +import com.glxp.sale.admin.dao.info.ScheduledDao; +import com.glxp.sale.admin.entity.info.ScheduledEntity; +import com.glxp.sale.admin.entity.inout.StockOrderEntity; +import com.glxp.sale.admin.req.udid.ScheduledRequest; +import com.glxp.sale.admin.res.inout.StockOrderResponse; +import com.glxp.sale.admin.service.inout.OrderService; +import com.glxp.sale.admin.service.inout.StockOrderService; +import lombok.extern.slf4j.Slf4j; +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.List; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 自动补单定时任务 + */ +@Slf4j +@Component +@EnableScheduling +public class SupplementOrderTask implements SchedulingConfigurer { + + @Resource + ScheduledDao scheduledDao; + @Resource + StockOrderService stockOrderService; + @Resource + OrderService orderService; + + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + taskRegistrar.addTriggerTask(() -> process(), + triggerContext -> { + ScheduledRequest scheduledRequest = new ScheduledRequest(); + scheduledRequest.setCronName("supplementOrderTask"); + ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); + String cron = scheduledEntity.getCron(); + if (cron.isEmpty()) { + log.error("cron is null"); + } + return new CronTrigger(cron).nextExecutionTime(triggerContext); + }); + } + + private void process() { + log.info("开始扫描补单数据"); + //计数器 + AtomicInteger counter = new AtomicInteger(0); + List orderEntities = stockOrderService.getSupplementOrderBillNoList(); + if (CollUtil.isNotEmpty(orderEntities)) { + List stockOrderResponses = orderService.checkSupplementOrder(orderEntities); + for (StockOrderResponse stockOrderRespons : stockOrderResponses) { + if (stockOrderRespons.isEnableSupplementOrder()) { + //此单据可以补单 + orderService.supplementOrder(stockOrderRespons.getBillNo()); + counter.addAndGet(1); + } + } + } + log.info("补单结束,此次补单数量为:{}", counter.get()); + } + + +} diff --git a/api-admin/src/main/resources/mybatis/mapper/info/ScheduleDao.xml b/api-admin/src/main/resources/mybatis/mapper/info/ScheduleDao.xml index 1f35662..7bfda3f 100644 --- a/api-admin/src/main/resources/mybatis/mapper/info/ScheduleDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/info/ScheduleDao.xml @@ -20,7 +20,7 @@ where id = #{id} - UPDATE sys_scheduled + UPDATE scheduled cron=#{cron}, diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml index db6c082..5ba8c2c 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml @@ -217,4 +217,7 @@ + \ No newline at end of file