From bcc19c80fcc23d6962d88828ec789917cdcd728c Mon Sep 17 00:00:00 2001 From: chenlong Date: Wed, 21 Aug 2024 16:59:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=8D=95=E4=BB=BB=E5=8A=A1=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E5=BE=85=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...va => OrderSplitAllTaskStateConstant.java} | 9 +- .../DistributionSplitOrderTaskController.java | 18 ++- .../IDistributionSplitOrderTaskService.java | 7 + ...DistributionSplitOrderTaskServiceImpl.java | 137 +++++++++++++++--- .../distribution/vo/SplitPackageOrderVO.java | 14 ++ 5 files changed, 158 insertions(+), 27 deletions(-) rename blade-biz-common/src/main/java/org/springblade/common/constant/order/{OrderSplitTaskStateConstant.java => OrderSplitAllTaskStateConstant.java} (54%) create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/vo/SplitPackageOrderVO.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/order/OrderSplitTaskStateConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/order/OrderSplitAllTaskStateConstant.java similarity index 54% rename from blade-biz-common/src/main/java/org/springblade/common/constant/order/OrderSplitTaskStateConstant.java rename to blade-biz-common/src/main/java/org/springblade/common/constant/order/OrderSplitAllTaskStateConstant.java index 7452e6cf1..531180361 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/order/OrderSplitTaskStateConstant.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/order/OrderSplitAllTaskStateConstant.java @@ -5,18 +5,19 @@ import lombok.Getter; /** * 拆单总任务状态 - * 状态:0=未完成,1=已完成 + * 状态:0=未完成,1=已完成, 2=已撤销 */ @Getter -public enum OrderSplitTaskStateConstant { +public enum OrderSplitAllTaskStateConstant { InProgress("未完成",0), - finish("已完成",1); + finish("已完成",1), + cancel("已撤销",2); private final String name; private final Integer value; - OrderSplitTaskStateConstant(String name, Integer value) { + OrderSplitAllTaskStateConstant(String name, Integer value) { this.name = name; this.value = value; } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSplitOrderTaskController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSplitOrderTaskController.java index 566b85c25..ba5b5b666 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSplitOrderTaskController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSplitOrderTaskController.java @@ -7,6 +7,7 @@ import com.logpm.distribution.dto.splitOrder.DistributionSplitTaskSearchDTO; import com.logpm.distribution.entity.DistributionSplitOrderAllTaskEntity; import com.logpm.distribution.entity.DistributionSplitOrderTaskEntity; import com.logpm.distribution.service.IDistributionSplitOrderTaskService; +import com.logpm.distribution.vo.SplitPackageOrderVO; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; @@ -81,7 +82,7 @@ public class DistributionSplitOrderTaskController { return distributionSplitOrderTaskService.finishTask(taskId); } - @RequestMapping("/getTaskDetail") + @RequestMapping("/get-task-detail") public R getTaskDetail(Long taskId) { return distributionSplitOrderTaskService.getTaskDetail(taskId); } @@ -95,4 +96,19 @@ public class DistributionSplitOrderTaskController { public R updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity) { return distributionSplitOrderTaskService.updateTask(distributionSplitOrderTaskEntity); } + + @RequestMapping("/check-order-code") + public R checkOrderCode(String orderCode) { + return distributionSplitOrderTaskService.checkOrderCode(orderCode); + } + + @RequestMapping("/get-package-code-by-order-code") + public R> getPackageCodeByOrderCode(Query query, String orderCode) { + return distributionSplitOrderTaskService.getPackageCodeByOrderCode(query, orderCode); + } + + @RequestMapping("/get-package-code-by-task-id") + public R> getPackageCodeByTaskId(Long taskId) { + return distributionSplitOrderTaskService.getPackageCodeByTaskId( taskId); + } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSplitOrderTaskService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSplitOrderTaskService.java index e749731e1..7de3e8547 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSplitOrderTaskService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSplitOrderTaskService.java @@ -6,6 +6,7 @@ import com.logpm.distribution.dto.splitOrder.DistributionSplitAllTaskSearchDTO; import com.logpm.distribution.dto.splitOrder.DistributionSplitTaskSearchDTO; import com.logpm.distribution.entity.DistributionSplitOrderAllTaskEntity; import com.logpm.distribution.entity.DistributionSplitOrderTaskEntity; +import com.logpm.distribution.vo.SplitPackageOrderVO; import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; @@ -111,4 +112,10 @@ public interface IDistributionSplitOrderTaskService extends BaseService finishAllTask(Long allTaskId); R deleteAllTask(Long allTaskId); + + R checkOrderCode(String orderCode); + + R> getPackageCodeByTaskId(Long taskId); + + R> getPackageCodeByOrderCode(Query query, String orderCode); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSplitOrderTaskServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSplitOrderTaskServiceImpl.java index cf180a328..f81956a70 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSplitOrderTaskServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSplitOrderTaskServiceImpl.java @@ -5,15 +5,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.SerializationUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.logpm.distribution.dto.splitOrder.DistributionSplitAllTaskSearchDTO; import com.logpm.distribution.dto.splitOrder.DistributionSplitTaskSearchDTO; import com.logpm.distribution.entity.*; import com.logpm.distribution.mapper.DistributionSplitOrderTaskMapper; import com.logpm.distribution.service.*; +import com.logpm.distribution.vo.SplitPackageOrderVO; import groovy.util.logging.Slf4j; import lombok.AllArgsConstructor; import org.springblade.common.constant.order.OrderSplitStateConstant; -import org.springblade.common.constant.order.OrderSplitTaskStateConstant; +import org.springblade.common.constant.order.OrderSplitAllTaskStateConstant; import org.springblade.common.constant.orderpackage.OrderPackageReservationStatusConstant; import org.springblade.common.constant.orderpackage.OrderPackageSplitStateConstant; import org.springblade.common.exception.CustomerException; @@ -24,11 +27,11 @@ import org.springblade.core.redis.lock.LockType; import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -69,7 +72,8 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl page = Condition.getPage(query); - list(page, queryWrapper); + List list = list(page, queryWrapper); + page.setRecords(list); return R.data(page); } @@ -191,7 +195,7 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl cancelTask(Long taskId) { DistributionSplitOrderTaskEntity task = getById(taskId); - if (!task.getState().equals(OrderSplitStateConstant.finish.getValue())) { + if (!task.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { return R.fail("任务未已完成或已取消,无法操作"); } DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(task.getSplitOrderAllTaskId()); - if (!allTask.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { + if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { return R.fail("拆单总任务已完成或已取消,无法操作"); } @@ -675,20 +679,25 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpllambdaUpdate() - .in(DistributionParcelListEntity::getOrderPackageCode, packageList.stream().map(DistributionSplitOrderDetailEntity::getOrderPackageCode).collect(Collectors.toList())) - .eq(DistributionParcelListEntity::getStockArticleId, task.getNewStockArticleId()) - .set(DistributionParcelListEntity::getStockArticleId, task.getStockArticleId()) - .set(DistributionParcelListEntity::getOrderCode, task.getOrderCode()) - ); + if (!packageList.isEmpty()) { + distributionParcelListService.update(Wrappers.lambdaUpdate() + .in(DistributionParcelListEntity::getOrderPackageCode, packageList.stream().map(DistributionSplitOrderDetailEntity::getOrderPackageCode).collect(Collectors.toList())) + .eq(DistributionParcelListEntity::getStockArticleId, task.getNewStockArticleId()) + .set(DistributionParcelListEntity::getStockArticleId, task.getStockArticleId()) + .set(DistributionParcelListEntity::getOrderCode, task.getOrderCode()) + ); + } distributionSplitOrderLogService.record(task, "撤消拆单任务", AuthUtil.getUser().getUserName()); @@ -700,17 +709,17 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl cancelAllTask(Long allTaskId) { DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); - if (!allTask.getState().equals(OrderSplitStateConstant.finish.getValue())) { + if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.finish.getValue())) { return R.fail("拆单总任务未完成或已取消,无法操作"); } - allTask.setState(OrderSplitTaskStateConstant.InProgress.getValue()); + allTask.setState(OrderSplitAllTaskStateConstant.InProgress.getValue()); distributionSplitOrderAllTaskService.updateById(allTask); return R.success("success"); @@ -719,11 +728,19 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl finishAllTask(Long allTaskId) { DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); - if (!allTask.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { + if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { return R.fail("拆单总任务已完成或已取消,无法操作"); } - allTask.setState(OrderSplitTaskStateConstant.finish.getValue()); + DistributionSplitOrderTaskEntity existsInProgress = getOne(Wrappers.lambdaQuery() + .eq(DistributionSplitOrderTaskEntity::getSplitOrderAllTaskId, allTaskId) + .eq(DistributionSplitOrderTaskEntity::getState, OrderSplitStateConstant.InProgress.getValue()) + ); + if (existsInProgress != null) { + return R.fail("拆单总任务中存在未完成拆单任务,无法操作"); + } + + allTask.setState(OrderSplitAllTaskStateConstant.finish.getValue()); distributionSplitOrderAllTaskService.updateById(allTask); return R.success("success"); @@ -733,7 +750,7 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl deleteAllTask(Long allTaskId) { DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); - if (!allTask.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { + if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { return R.fail("拆单总任务已完成或已取消,无法操作"); } @@ -819,9 +836,85 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl getTaskDetail(Long taskId) { - return null; + R> PackageOrderList = getPackageCodeByTaskId(taskId); + + List logList = distributionSplitOrderLogService.list(Wrappers.lambdaQuery() + .eq(DistributionSplitOrderLogEntity::getSplitOrderTaskId, taskId) + ); + + HashMap res = new HashMap<>(); + + res.put("packageList", PackageOrderList.getData()); + res.put("logList", logList); + + return R.data(res); + } + + + @Override + public R checkOrderCode(String orderCode) { + + DistributionSplitOrderAllTaskEntity exists = distributionSplitOrderAllTaskService.getOne( + Wrappers.lambdaQuery() + .eq(DistributionSplitOrderAllTaskEntity::getOrderCode, orderCode) + ); + + return R.success(exists == null ? "" : exists.getNo()); } + @Override + public R> getPackageCodeByOrderCode(Query query, String orderCode) { + IPage page = Condition.getPage(query); + + List list = distributionParcelListService.list(page, Wrappers.lambdaQuery() + .eq(DistributionParcelListEntity::getOrderCode, orderCode) + ); + + ArrayList> columns = new ArrayList<>(); + columns.add(DistributionParcelListEntity::getOrderPackageCode); + Wrappers.lambdaQuery().select(true, columns); + + List res = list.isEmpty() + ? new ArrayList<>() + : list.stream().map(distributionParcelListEntity -> { + SplitPackageOrderVO splitPackageOrderVO = new SplitPackageOrderVO(); + splitPackageOrderVO.setPackageCode(distributionParcelListEntity.getOrderPackageCode()); + splitPackageOrderVO.setMateriel(distributionParcelListEntity.getMaterialName()); + splitPackageOrderVO.setOrderCode(distributionParcelListEntity.getOrderCode()); + splitPackageOrderVO.setCategory(distributionParcelListEntity.getThirdProduct()); + return splitPackageOrderVO; + }).collect(Collectors.toList()); + + IPage newPage = Condition.getPage(query); + newPage.setRecords(res); + + return R.data(newPage); + } + + @Override + public R> getPackageCodeByTaskId(Long taskId) { + List details = distributionSplitOrderDetailService.list( + Wrappers.lambdaQuery() + .eq(DistributionSplitOrderDetailEntity::getSplitOrderTaskId, taskId) + ); + List res = new ArrayList<>(); + if (!details.isEmpty()){ + List list = distributionParcelListService.list(Wrappers.lambdaQuery() + .in(DistributionParcelListEntity::getOrderPackageCode, details.stream().map(DistributionSplitOrderDetailEntity::getOrderPackageCode).collect(Collectors.toList())) + ); + + res = list.stream().map(distributionParcelListEntity -> { + SplitPackageOrderVO splitPackageOrderVO = new SplitPackageOrderVO(); + splitPackageOrderVO.setPackageCode(distributionParcelListEntity.getOrderPackageCode()); + splitPackageOrderVO.setMateriel(distributionParcelListEntity.getMaterialName()); + splitPackageOrderVO.setOrderCode(distributionParcelListEntity.getOrderCode()); + splitPackageOrderVO.setCategory(distributionParcelListEntity.getThirdProduct()); + return splitPackageOrderVO; + }).collect(Collectors.toList()); + } + + return R.data(res); + } private int getCurrentOrderCodeNumber(Long oldStockArticleId) { diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/vo/SplitPackageOrderVO.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/vo/SplitPackageOrderVO.java new file mode 100644 index 000000000..16ddf14be --- /dev/null +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/vo/SplitPackageOrderVO.java @@ -0,0 +1,14 @@ +package com.logpm.distribution.vo; + +import lombok.Data; + +/** + * 拆单包件VO + */ +@Data +public class SplitPackageOrderVO { + private String orderCode; + private String packageCode; + private String materiel; + private String category; +}