|
|
@ -5,15 +5,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.SerializationUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.SerializationUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
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.DistributionSplitAllTaskSearchDTO; |
|
|
|
import com.logpm.distribution.dto.splitOrder.DistributionSplitTaskSearchDTO; |
|
|
|
import com.logpm.distribution.dto.splitOrder.DistributionSplitTaskSearchDTO; |
|
|
|
import com.logpm.distribution.entity.*; |
|
|
|
import com.logpm.distribution.entity.*; |
|
|
|
import com.logpm.distribution.mapper.DistributionSplitOrderTaskMapper; |
|
|
|
import com.logpm.distribution.mapper.DistributionSplitOrderTaskMapper; |
|
|
|
import com.logpm.distribution.service.*; |
|
|
|
import com.logpm.distribution.service.*; |
|
|
|
|
|
|
|
import com.logpm.distribution.vo.SplitPackageOrderVO; |
|
|
|
import groovy.util.logging.Slf4j; |
|
|
|
import groovy.util.logging.Slf4j; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import org.springblade.common.constant.order.OrderSplitStateConstant; |
|
|
|
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.OrderPackageReservationStatusConstant; |
|
|
|
import org.springblade.common.constant.orderpackage.OrderPackageSplitStateConstant; |
|
|
|
import org.springblade.common.constant.orderpackage.OrderPackageSplitStateConstant; |
|
|
|
import org.springblade.common.exception.CustomerException; |
|
|
|
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.redis.lock.RedisLockClient; |
|
|
|
import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
import org.springframework.data.domain.Page; |
|
|
|
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -69,7 +72,8 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
IPage<DistributionSplitOrderTaskEntity> page = Condition.getPage(query); |
|
|
|
IPage<DistributionSplitOrderTaskEntity> page = Condition.getPage(query); |
|
|
|
list(page, queryWrapper); |
|
|
|
List<DistributionSplitOrderTaskEntity> list = list(page, queryWrapper); |
|
|
|
|
|
|
|
page.setRecords(list); |
|
|
|
|
|
|
|
|
|
|
|
return R.data(page); |
|
|
|
return R.data(page); |
|
|
|
} |
|
|
|
} |
|
|
@ -191,7 +195,7 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
if (task == null) { |
|
|
|
if (task == null) { |
|
|
|
return R.fail("拆单任务不存在"); |
|
|
|
return R.fail("拆单任务不存在"); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!task.getState().equals(OrderSplitTaskStateConstant.InProgress.getValue())) { |
|
|
|
if (!task.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { |
|
|
|
return R.fail("拆单任务已完成,无法添加"); |
|
|
|
return R.fail("拆单任务已完成,无法添加"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -654,11 +658,11 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R<String> cancelTask(Long taskId) { |
|
|
|
public R<String> cancelTask(Long taskId) { |
|
|
|
DistributionSplitOrderTaskEntity task = getById(taskId); |
|
|
|
DistributionSplitOrderTaskEntity task = getById(taskId); |
|
|
|
if (!task.getState().equals(OrderSplitStateConstant.finish.getValue())) { |
|
|
|
if (!task.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { |
|
|
|
return R.fail("任务未已完成或已取消,无法操作"); |
|
|
|
return R.fail("任务未已完成或已取消,无法操作"); |
|
|
|
} |
|
|
|
} |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(task.getSplitOrderAllTaskId()); |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(task.getSplitOrderAllTaskId()); |
|
|
|
if (!allTask.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { |
|
|
|
if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { |
|
|
|
return R.fail("拆单总任务已完成或已取消,无法操作"); |
|
|
|
return R.fail("拆单总任务已完成或已取消,无法操作"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -675,20 +679,25 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
distributionStockArticleService.updateById(originalOrder); |
|
|
|
distributionStockArticleService.updateById(originalOrder); |
|
|
|
|
|
|
|
|
|
|
|
DistributionStockArticleEntity newOrder = distributionStockArticleService.getById(task.getNewStockArticleId()); |
|
|
|
DistributionStockArticleEntity newOrder = distributionStockArticleService.getById(task.getNewStockArticleId()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (newOrder != null) { |
|
|
|
newOrder.setTotalNumber(0); |
|
|
|
newOrder.setTotalNumber(0); |
|
|
|
newOrder.setHandQuantity(0); |
|
|
|
newOrder.setHandQuantity(0); |
|
|
|
distributionStockArticleService.updateById(newOrder); |
|
|
|
distributionStockArticleService.updateById(newOrder); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
task.setNumber(0); |
|
|
|
task.setNumber(0); |
|
|
|
task.setState(OrderSplitStateConstant.cancel.getValue()); |
|
|
|
task.setState(OrderSplitStateConstant.cancel.getValue()); |
|
|
|
updateById(task); |
|
|
|
updateById(task); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!packageList.isEmpty()) { |
|
|
|
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>lambdaUpdate() |
|
|
|
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>lambdaUpdate() |
|
|
|
.in(DistributionParcelListEntity::getOrderPackageCode, packageList.stream().map(DistributionSplitOrderDetailEntity::getOrderPackageCode).collect(Collectors.toList())) |
|
|
|
.in(DistributionParcelListEntity::getOrderPackageCode, packageList.stream().map(DistributionSplitOrderDetailEntity::getOrderPackageCode).collect(Collectors.toList())) |
|
|
|
.eq(DistributionParcelListEntity::getStockArticleId, task.getNewStockArticleId()) |
|
|
|
.eq(DistributionParcelListEntity::getStockArticleId, task.getNewStockArticleId()) |
|
|
|
.set(DistributionParcelListEntity::getStockArticleId, task.getStockArticleId()) |
|
|
|
.set(DistributionParcelListEntity::getStockArticleId, task.getStockArticleId()) |
|
|
|
.set(DistributionParcelListEntity::getOrderCode, task.getOrderCode()) |
|
|
|
.set(DistributionParcelListEntity::getOrderCode, task.getOrderCode()) |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
distributionSplitOrderLogService.record(task, "撤消拆单任务", AuthUtil.getUser().getUserName()); |
|
|
|
distributionSplitOrderLogService.record(task, "撤消拆单任务", AuthUtil.getUser().getUserName()); |
|
|
|
|
|
|
|
|
|
|
@ -700,17 +709,17 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
throw new CustomerException("系统错误"); |
|
|
|
throw new CustomerException("系统错误"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return R.success("success"); |
|
|
|
return R.success("操作成功"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R<String> cancelAllTask(Long allTaskId) { |
|
|
|
public R<String> cancelAllTask(Long allTaskId) { |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); |
|
|
|
if (!allTask.getState().equals(OrderSplitStateConstant.finish.getValue())) { |
|
|
|
if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.finish.getValue())) { |
|
|
|
return R.fail("拆单总任务未完成或已取消,无法操作"); |
|
|
|
return R.fail("拆单总任务未完成或已取消,无法操作"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
allTask.setState(OrderSplitTaskStateConstant.InProgress.getValue()); |
|
|
|
allTask.setState(OrderSplitAllTaskStateConstant.InProgress.getValue()); |
|
|
|
distributionSplitOrderAllTaskService.updateById(allTask); |
|
|
|
distributionSplitOrderAllTaskService.updateById(allTask); |
|
|
|
|
|
|
|
|
|
|
|
return R.success("success"); |
|
|
|
return R.success("success"); |
|
|
@ -719,11 +728,19 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R<String> finishAllTask(Long allTaskId) { |
|
|
|
public R<String> finishAllTask(Long allTaskId) { |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); |
|
|
|
if (!allTask.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { |
|
|
|
if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { |
|
|
|
return R.fail("拆单总任务已完成或已取消,无法操作"); |
|
|
|
return R.fail("拆单总任务已完成或已取消,无法操作"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
allTask.setState(OrderSplitTaskStateConstant.finish.getValue()); |
|
|
|
DistributionSplitOrderTaskEntity existsInProgress = getOne(Wrappers.<DistributionSplitOrderTaskEntity>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); |
|
|
|
distributionSplitOrderAllTaskService.updateById(allTask); |
|
|
|
|
|
|
|
|
|
|
|
return R.success("success"); |
|
|
|
return R.success("success"); |
|
|
@ -733,7 +750,7 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R<String> deleteAllTask(Long allTaskId) { |
|
|
|
public R<String> deleteAllTask(Long allTaskId) { |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); |
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(allTaskId); |
|
|
|
if (!allTask.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { |
|
|
|
if (!allTask.getState().equals(OrderSplitAllTaskStateConstant.InProgress.getValue())) { |
|
|
|
return R.fail("拆单总任务已完成或已取消,无法操作"); |
|
|
|
return R.fail("拆单总任务已完成或已取消,无法操作"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -819,10 +836,86 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R<Object> getTaskDetail(Long taskId) { |
|
|
|
public R<Object> getTaskDetail(Long taskId) { |
|
|
|
return null; |
|
|
|
R<List<SplitPackageOrderVO>> PackageOrderList = getPackageCodeByTaskId(taskId); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DistributionSplitOrderLogEntity> logList = distributionSplitOrderLogService.list(Wrappers.<DistributionSplitOrderLogEntity>lambdaQuery() |
|
|
|
|
|
|
|
.eq(DistributionSplitOrderLogEntity::getSplitOrderTaskId, taskId) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HashMap<String, Object> res = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res.put("packageList", PackageOrderList.getData()); |
|
|
|
|
|
|
|
res.put("logList", logList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return R.data(res); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public R<String> checkOrderCode(String orderCode) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DistributionSplitOrderAllTaskEntity exists = distributionSplitOrderAllTaskService.getOne( |
|
|
|
|
|
|
|
Wrappers.<DistributionSplitOrderAllTaskEntity>lambdaQuery() |
|
|
|
|
|
|
|
.eq(DistributionSplitOrderAllTaskEntity::getOrderCode, orderCode) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return R.success(exists == null ? "" : exists.getNo()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public R<IPage<SplitPackageOrderVO>> getPackageCodeByOrderCode(Query query, String orderCode) { |
|
|
|
|
|
|
|
IPage<DistributionParcelListEntity> page = Condition.getPage(query); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DistributionParcelListEntity> list = distributionParcelListService.list(page, Wrappers.<DistributionParcelListEntity>lambdaQuery() |
|
|
|
|
|
|
|
.eq(DistributionParcelListEntity::getOrderCode, orderCode) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ArrayList<SFunction<DistributionParcelListEntity, ?>> columns = new ArrayList<>(); |
|
|
|
|
|
|
|
columns.add(DistributionParcelListEntity::getOrderPackageCode); |
|
|
|
|
|
|
|
Wrappers.<DistributionParcelListEntity>lambdaQuery().select(true, columns); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<SplitPackageOrderVO> 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<SplitPackageOrderVO> newPage = Condition.getPage(query); |
|
|
|
|
|
|
|
newPage.setRecords(res); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return R.data(newPage); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public R<List<SplitPackageOrderVO>> getPackageCodeByTaskId(Long taskId) { |
|
|
|
|
|
|
|
List<DistributionSplitOrderDetailEntity> details = distributionSplitOrderDetailService.list( |
|
|
|
|
|
|
|
Wrappers.<DistributionSplitOrderDetailEntity>lambdaQuery() |
|
|
|
|
|
|
|
.eq(DistributionSplitOrderDetailEntity::getSplitOrderTaskId, taskId) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
List<SplitPackageOrderVO> res = new ArrayList<>(); |
|
|
|
|
|
|
|
if (!details.isEmpty()){ |
|
|
|
|
|
|
|
List<DistributionParcelListEntity> list = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>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) { |
|
|
|
private int getCurrentOrderCodeNumber(Long oldStockArticleId) { |
|
|
|
|
|
|
|
|
|
|
|
long count = count(Wrappers.<DistributionSplitOrderTaskEntity>lambdaQuery().eq( |
|
|
|
long count = count(Wrappers.<DistributionSplitOrderTaskEntity>lambdaQuery().eq( |
|
|
|