Browse Source

拆单任务完成,待测试

dist.1.3.0
chenlong 8 months ago
parent
commit
a9bb765e57
  1. 95
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSplitOrderTaskController.java
  2. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSplitOrderTaskService.java
  3. 147
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSplitOrderTaskServiceImpl.java

95
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSplitOrderTaskController.java

@ -0,0 +1,95 @@
package com.logpm.distribution.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.service.IDistributionSplitOrderTaskService;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@AllArgsConstructor
@RequestMapping("/split-order-task")
public class DistributionSplitOrderTaskController {
private final IDistributionSplitOrderTaskService distributionSplitOrderTaskService;
@PostMapping("/add-package-code")
public R<String> addPackageCode(Long taskId, List<String> packageCodes) {
return distributionSplitOrderTaskService.addPackageCode(taskId, packageCodes);
}
@GetMapping("/all-task-list")
public R<IPage<DistributionSplitOrderAllTaskEntity>> allTaskList(Query query, DistributionSplitAllTaskSearchDTO distributionSplitAllTaskSearchDTO) {
return distributionSplitOrderTaskService.allTaskList(query, distributionSplitAllTaskSearchDTO);
}
@PostMapping("/batch-create-task")
public R<String> batchCreateTask(List<DistributionSplitOrderTaskEntity> distributionSplitOrderTaskList) {
return distributionSplitOrderTaskService.batchCreateTask(distributionSplitOrderTaskList);
}
@PostMapping("/cancel-all-task")
public R<String> cancelAllTask(Long allTaskId) {
return distributionSplitOrderTaskService.cancelAllTask(allTaskId);
}
@RequestMapping("/cancel-package-code")
public R<String> cancelPackageCode(Long taskId, List<String> packageCodes) {
return distributionSplitOrderTaskService.cancelPackageCode(taskId, packageCodes);
}
@RequestMapping("/cancel-task")
public R<String> cancelTask(Long taskId) {
return distributionSplitOrderTaskService.cancelTask(taskId);
}
@RequestMapping("/create-task")
public R<String> createTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity, List<String> packageCodeList) {
return distributionSplitOrderTaskService.createTask(distributionSplitOrderTaskEntity, packageCodeList);
}
@RequestMapping("/delete-all-task")
public R<String> deleteAllTask(Long allTaskId) {
return distributionSplitOrderTaskService.deleteAllTask(allTaskId);
}
@RequestMapping("/delete-task")
public R<String> deleteTask(Long taskId) {
return distributionSplitOrderTaskService.deleteTask(taskId);
}
@RequestMapping("/finish-all-task")
public R<String> finishAllTask(Long allTaskId) {
return distributionSplitOrderTaskService.finishAllTask(allTaskId);
}
@RequestMapping("/finish-task")
public R<String> finishTask(Long taskId) {
return distributionSplitOrderTaskService.finishTask(taskId);
}
@RequestMapping("/getTaskDetail")
public R<Object> getTaskDetail(Long taskId) {
return distributionSplitOrderTaskService.getTaskDetail(taskId);
}
@RequestMapping("/task-list")
public R<IPage<DistributionSplitOrderTaskEntity>> taskList(Query query, DistributionSplitTaskSearchDTO distributionSplitTaskSearchDTO) {
return distributionSplitOrderTaskService.taskList(query, distributionSplitTaskSearchDTO);
}
@RequestMapping("/update-task")
public R<String> updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity) {
return distributionSplitOrderTaskService.updateTask(distributionSplitOrderTaskEntity);
}
}

3
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSplitOrderTaskService.java

@ -51,10 +51,9 @@ public interface IDistributionSplitOrderTaskService extends BaseService<Distribu
/**
* 更新任务
* @param distributionSplitOrderTaskEntity
* @param packageCodeList
* @return
*/
R<String> updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity, List<String> packageCodeList);
R<String> updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity);
/**
* 添加包码

147
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSplitOrderTaskServiceImpl.java

@ -48,7 +48,30 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
@Override
public R<IPage<DistributionSplitOrderTaskEntity>> taskList(Query query, DistributionSplitTaskSearchDTO distributionSplitTaskSearchDTO) {
return null;
LambdaQueryWrapper<DistributionSplitOrderTaskEntity> queryWrapper = Wrappers.lambdaQuery();
if (distributionSplitTaskSearchDTO.getSplitOrderAllTaskId() != null) {
queryWrapper.eq(DistributionSplitOrderTaskEntity::getSplitOrderAllTaskId, distributionSplitTaskSearchDTO.getSplitOrderAllTaskId());
}
if (distributionSplitTaskSearchDTO.getOrderCode() != null) {
queryWrapper.likeLeft(DistributionSplitOrderTaskEntity::getOrderCode, distributionSplitTaskSearchDTO.getOrderCode());
}
if (distributionSplitTaskSearchDTO.getCustomerName() != null) {
queryWrapper.likeLeft(DistributionSplitOrderTaskEntity::getCustomerName, distributionSplitTaskSearchDTO.getCustomerName());
}
if (distributionSplitTaskSearchDTO.getCustomerTelephone() != null) {
queryWrapper.likeLeft(DistributionSplitOrderTaskEntity::getCustomerTelephone, distributionSplitTaskSearchDTO.getCustomerTelephone());
}
if (distributionSplitTaskSearchDTO.getState() != null) {
queryWrapper.eq(DistributionSplitOrderTaskEntity::getState, distributionSplitTaskSearchDTO.getState());
}
if (distributionSplitTaskSearchDTO.getCreateTime() != null) {
queryWrapper.between(DistributionSplitOrderTaskEntity::getCreateTime, distributionSplitTaskSearchDTO.getCreateTime()[0], distributionSplitTaskSearchDTO.getCreateTime()[1]);
}
IPage<DistributionSplitOrderTaskEntity> page = Condition.getPage(query);
list(page, queryWrapper);
return R.data(page);
}
@Transactional
@ -71,12 +94,29 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
}
taskLock(stockArticleId, () -> {
String allTaskNo = getAllTaskNo();
DistributionSplitOrderAllTaskEntity allTask = new DistributionSplitOrderAllTaskEntity();
allTask.setNo(allTaskNo);
allTask.setStockArticleId(stockArticleId);
allTask.setOrderCode(distributionStockArticle.getOrderCode());
allTask.setNumber(distributionSplitOrderTaskList.size());
allTask.setState(OrderSplitStateConstant.InProgress.getValue());
allTask.setMallName(distributionStockArticle.getMallName());
int taskNumber = distributionSplitOrderTaskList.stream()
.map(DistributionSplitOrderTaskEntity::getTaskNumber)
.mapToInt(Integer::intValue)
.sum();
allTask.setOrderPackageNumber(taskNumber);
distributionSplitOrderAllTaskService.save(allTask);
int currentNumber = getCurrentOrderCodeNumber(stockArticleId);
for (DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity : distributionSplitOrderTaskList) {
String newOrderCode = getNewOrderCode(distributionSplitOrderTaskEntity.getOrderCode(), currentNumber++);
distributionSplitOrderTaskEntity.setNewOrderCode(newOrderCode);
distributionSplitOrderTaskEntity.setSplitOrderAllTaskId(allTask.getId());
distributionSplitOrderTaskEntity.setSplitOrderAllTaskNo(allTask.getNo());
save(distributionSplitOrderTaskEntity);
distributionSplitOrderLogService.record(distributionSplitOrderTaskEntity, "创建拆单任务", AuthUtil.getUser().getUserName());
}
@ -93,6 +133,15 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
return R.success("success");
}
private String getAllTaskNo() {
String today = DateUtil.format(DateUtil.date(), "yyyyMMdd");
long count = distributionSplitOrderAllTaskService.count(Wrappers.<DistributionSplitOrderAllTaskEntity>lambdaQuery()
.likeLeft(DistributionSplitOrderAllTaskEntity::getNo, today)
);
return "CR" + today + String.format("%04d", count + 1);
}
@Transactional
@Override
public R<String> addPackageCode(Long taskId, List<String> packageCodes) {
@ -285,59 +334,19 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
@Transactional
@Override
public R<String> updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity, List<String> packageCodeList) {
public R<String> updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity) {
try {
DistributionSplitOrderTaskEntity task = getById(distributionSplitOrderTaskEntity.getId());
if (task == null) {
return R.fail("拆单任务不存在");
}
if (!task.getStockArticleId().equals(distributionSplitOrderTaskEntity.getStockArticleId())) {
return R.fail("拆单任务订单ID不一致");
}
DistributionStockArticleEntity distributionStockArticle = distributionStockArticleService.getById(distributionSplitOrderTaskEntity.getStockArticleId());
if (distributionStockArticle == null) {
return R.fail("原订单信息错误");
}
List<DistributionParcelListEntity> belongsToOrder = new ArrayList<>();
if (!packageCodeList.isEmpty()) {
ArrayList<Long> StockArticleIds = new ArrayList<>();
StockArticleIds.add(distributionSplitOrderTaskEntity.getStockArticleId());
StockArticleIds.add(task.getNewStockArticleId());
belongsToOrder = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>lambdaQuery()
.in(DistributionParcelListEntity::getStockArticleId, StockArticleIds)
.in(DistributionParcelListEntity::getOrderPackageCode, packageCodeList)
);
if (belongsToOrder.size() != packageCodeList.size()) {
List<String> belongsToOrderPackage = belongsToOrder.stream().map(DistributionParcelListEntity::getOrderPackageCode).collect(Collectors.toList());
return R.fail(String.format("订单包件信息错误,选择的包件(%s)不属于该订单", packageCodeList.stream()
.filter(packageCode -> !belongsToOrderPackage.contains(packageCode))
.collect(Collectors.joining(","))
));
}
List<DistributionParcelListEntity> reservationsPackageList = belongsToOrder.stream()
.filter(distributionParcelListEntity -> OrderPackageReservationStatusConstant.yiyueyue.getValue().equals(distributionParcelListEntity.getOrderPackageReservationStatus()))
.collect(Collectors.toList());
if (!reservationsPackageList.isEmpty()) {
return R.fail(String.format("订单包件:%s,已被预约,无法拆单", reservationsPackageList.stream()
.map(DistributionParcelListEntity::getOrderPackageCode)
.collect(Collectors.joining(","))
));
}
if (!task.getState().equals(OrderSplitStateConstant.InProgress.getValue())) {
return R.fail("拆单任务状态错误");
}
DistributionStockArticleEntity newStockArticle = distributionStockArticleService.getById(distributionSplitOrderTaskEntity.getNewStockArticleId());
if (newStockArticle == null) {
return R.fail("新订单信息错误");
}
updateById(distributionSplitOrderTaskEntity);
updateTask(distributionSplitOrderTaskEntity, distributionStockArticle, belongsToOrder, newStockArticle);
distributionSplitOrderLogService.record(distributionSplitOrderTaskEntity, "拆单任务修改", AuthUtil.getUser().getUserName());
return R.data("success");
@ -347,29 +356,6 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
}
}
private void updateTask(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity, DistributionStockArticleEntity distributionStockArticle, List<DistributionParcelListEntity> belongsToOrder, DistributionStockArticleEntity newStockArticle){
distributionSplitOrderTaskEntity.setNumber(belongsToOrder.size());
updateById(distributionSplitOrderTaskEntity);
newStockArticle.setTotalNumber(belongsToOrder.size());
newStockArticle.setHandQuantity(belongsToOrder.size());
distributionStockArticleService.save(newStockArticle);
if (!belongsToOrder.isEmpty()) {
packageUpdate(distributionSplitOrderTaskEntity, distributionStockArticle, belongsToOrder);
}
distributionStockArticle.setTotalNumber(distributionStockArticle.getTotalNumber() - belongsToOrder.size());
distributionStockArticle.setHandQuantity(distributionStockArticle.getHandQuantity() - belongsToOrder.size());
if (distributionStockArticle.getTotalNumber() == 0) {
distributionStockArticleService.removeById(distributionStockArticle.getId());
}else{
distributionStockArticleService.updateById(distributionStockArticle);
}
}
private void packageUpdate(DistributionSplitOrderTaskEntity distributionSplitOrderTaskEntity, DistributionStockArticleEntity distributionStockArticle, List<DistributionParcelListEntity> belongsToOrder) {
List<DistributionSplitOrderDetailEntity> taskJoinPackage = distributionSplitOrderDetailService.list(Wrappers.<DistributionSplitOrderDetailEntity>lambdaQuery()
.eq(DistributionSplitOrderDetailEntity::getSplitOrderTaskId, distributionSplitOrderTaskEntity.getId())
@ -753,13 +739,34 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
queryWrapper.between(DistributionSplitOrderAllTaskEntity::getCreateTime, distributionSplitAllTaskSearchDTO.getCreateTime()[0], distributionSplitAllTaskSearchDTO.getCreateTime()[1]);
}
if (distributionSplitAllTaskSearchDTO.getOrderPackageCode() != null) {
/*
* 包条搜索的时候默认先去搜索已拆单的表如果没有找到则去通过原订单找到拆单任务
*/
DistributionSplitOrderDetailEntity detail = distributionSplitOrderDetailService.getOne(Wrappers.<DistributionSplitOrderDetailEntity>lambdaQuery()
.eq(DistributionSplitOrderDetailEntity::getOrderPackageCode, distributionSplitAllTaskSearchDTO.getOrderPackageCode())
);
if (detail == null) {
Long splitOrderAllTaskId = 0L;
if (detail != null) {
splitOrderAllTaskId = detail.getSplitOrderAllTaskId();
}else{
DistributionParcelListEntity orderDetail = distributionParcelListService.getOne(Wrappers.<DistributionParcelListEntity>lambdaQuery()
.eq(DistributionParcelListEntity::getOrderPackageCode, distributionSplitAllTaskSearchDTO.getOrderPackageCode())
);
DistributionSplitOrderTaskEntity task = getOne(Wrappers.<DistributionSplitOrderTaskEntity>lambdaQuery()
.eq(DistributionSplitOrderTaskEntity::getStockArticleId, orderDetail.getStockArticleId())
);
if (task != null) {
splitOrderAllTaskId = task.getSplitOrderAllTaskId();
}
}
if (splitOrderAllTaskId == 0) {
return R.data(page);
}
queryWrapper.eq(DistributionSplitOrderAllTaskEntity::getId, detail.getSplitOrderAllTaskId());
queryWrapper.eq(DistributionSplitOrderAllTaskEntity::getId, splitOrderAllTaskId);
}
distributionSplitOrderAllTaskService.list(page, queryWrapper);

Loading…
Cancel
Save