|
|
|
@ -24,6 +24,7 @@ import com.logpm.distribution.service.IDistributionSplitOrderLogService;
|
|
|
|
|
import com.logpm.distribution.service.IDistributionSplitOrderTaskService; |
|
|
|
|
import com.logpm.distribution.service.IDistributionStockArticleService; |
|
|
|
|
import com.logpm.distribution.vo.DistributionSplitOrderAllTaskVO; |
|
|
|
|
import com.logpm.distribution.vo.DistributionSplitOrderTaskVO; |
|
|
|
|
import com.logpm.distribution.vo.SplitPackageOrderVO; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
@ -33,6 +34,7 @@ import org.springblade.common.constant.order.OrderSplitStateConstant;
|
|
|
|
|
import org.springblade.common.constant.order.OrderStatusConstant; |
|
|
|
|
import org.springblade.common.constant.orderpackage.*; |
|
|
|
|
import org.springblade.common.exception.CustomerException; |
|
|
|
|
import org.springblade.core.mp.base.BaseEntity; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.mp.support.Condition; |
|
|
|
|
import org.springblade.core.mp.support.Query; |
|
|
|
@ -87,12 +89,29 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IPage<DistributionSplitOrderTaskEntity> page = Condition.getPage(query); |
|
|
|
|
List<DistributionSplitOrderTaskEntity> list = list(page, queryWrapper); |
|
|
|
|
page.setRecords(list); |
|
|
|
|
IPage<DistributionSplitOrderTaskVO> pageRes = Condition.getPage(query); |
|
|
|
|
List<DistributionSplitOrderTaskEntity> list = list(page, queryWrapper); |
|
|
|
|
|
|
|
|
|
Map<Long, String> userIdNameMap = getUserIdNameMap(list.stream().map(DistributionSplitOrderTaskEntity::getCreateUser).collect(Collectors.toList())); |
|
|
|
|
|
|
|
|
|
pageRes.setRecords(list.stream().map(item -> { |
|
|
|
|
DistributionSplitOrderTaskVO distributionSplitOrderTaskVO = new DistributionSplitOrderTaskVO(); |
|
|
|
|
BeanUtil.copyProperties(item, distributionSplitOrderTaskVO); |
|
|
|
|
distributionSplitOrderTaskVO.setCreateUserName(userIdNameMap.get(item.getCreateUser())); |
|
|
|
|
return distributionSplitOrderTaskVO; |
|
|
|
|
}).collect(Collectors.toList())); |
|
|
|
|
pageRes.setPages(page.getPages()); |
|
|
|
|
pageRes.setTotal(page.getTotal()); |
|
|
|
|
|
|
|
|
|
return R.data(page); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<Long, String> getUserIdNameMap(List<Long> list) { |
|
|
|
|
String createUserIds = list.stream().map((d) -> d + "").collect(Collectors.joining(",")); |
|
|
|
|
List<User> users = iUserClient.userInfoByIds(AuthUtil.getTenantId(), String.join(",", createUserIds)).getData(); |
|
|
|
|
return users.stream().collect(Collectors.toMap(User::getId, User::getName)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Transactional |
|
|
|
|
@Override |
|
|
|
|
public R<String> batchCreateTask(List<DistributionSplitOrderTaskEntity> distributionSplitOrderTaskList) { |
|
|
|
@ -132,6 +151,15 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
return R.fail("订单"+ distributionStockArticle.getOrderCode() +"正在拆单中,不允许重复拆单"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int taskNumber = distributionSplitOrderTaskList |
|
|
|
|
.stream() |
|
|
|
|
.map(DistributionSplitOrderTaskEntity::getTaskNumber) |
|
|
|
|
.mapToInt(Integer::intValue) |
|
|
|
|
.sum(); |
|
|
|
|
if (packageAllowCount < taskNumber) { |
|
|
|
|
return R.fail("拆单数大于订单包件数量,请重新填写,目前可拆单数量:" + packageAllowCount); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
taskLock(stockArticleId, () -> { |
|
|
|
|
String allTaskNo = getAllTaskNo(); |
|
|
|
|
DistributionSplitOrderAllTaskEntity allTask = new DistributionSplitOrderAllTaskEntity(); |
|
|
|
@ -141,10 +169,7 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
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); |
|
|
|
|
|
|
|
|
@ -533,66 +558,25 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
if (task == null) { |
|
|
|
|
return R.fail("任务不存在"); |
|
|
|
|
} |
|
|
|
|
if (!task.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { |
|
|
|
|
return R.fail("拆单任务不在进行中,无法撤销"); |
|
|
|
|
} |
|
|
|
|
DistributionSplitOrderAllTaskEntity allTask = distributionSplitOrderAllTaskService.getById(task.getSplitOrderAllTaskId()); |
|
|
|
|
if (allTask == null) { |
|
|
|
|
return R.fail("总任务不存在"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
DistributionStockArticleEntity oldStockArticle = distributionStockArticleService.getById(task.getStockArticleId()); |
|
|
|
|
DistributionStockArticleEntity newStockArticle = distributionStockArticleService.getById(task.getNewStockArticleId()); |
|
|
|
|
|
|
|
|
|
if (oldStockArticle == null) { |
|
|
|
|
oldStockArticle = distributionStockArticleService.getOne(Wrappers.<DistributionStockArticleEntity>lambdaQuery() |
|
|
|
|
.eq(DistributionStockArticleEntity::getId, task.getStockArticleId()) |
|
|
|
|
.eq(DistributionStockArticleEntity::getIsDeleted, 1) |
|
|
|
|
); |
|
|
|
|
if (oldStockArticle == null) { |
|
|
|
|
return R.fail("订单错误,无法删除"); |
|
|
|
|
} |
|
|
|
|
oldStockArticle.setIsDeleted(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<DistributionParcelListEntity> packageList = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>lambdaQuery() |
|
|
|
|
.eq(DistributionParcelListEntity::getStockArticleId, task.getNewStockArticleId())); |
|
|
|
|
|
|
|
|
|
if (packageList.stream().anyMatch(distributionParcelListEntity -> OrderPackageReservationStatusConstant.yiyueyue.getValue().equals(distributionParcelListEntity.getOrderPackageReservationStatus()))) { |
|
|
|
|
return R.fail("新的订单包件已预约,无法删除"); |
|
|
|
|
long count = count( |
|
|
|
|
Wrappers.<DistributionSplitOrderTaskEntity>lambdaQuery() |
|
|
|
|
.eq(DistributionSplitOrderTaskEntity::getSplitOrderAllTaskId, task.getSplitOrderAllTaskId()) |
|
|
|
|
.in(DistributionSplitOrderTaskEntity::getState, Arrays.asList(OrderSplitStateConstant.InProgress.getValue(), OrderSplitStateConstant.finish.getValue())) |
|
|
|
|
); |
|
|
|
|
if (count == 1) { |
|
|
|
|
return R.fail("总任务下只有一条任务,无法撤销"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
|
|
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>lambdaUpdate() |
|
|
|
|
.eq(DistributionParcelListEntity::getStockArticleId, task.getNewStockArticleId()) |
|
|
|
|
.set(DistributionParcelListEntity::getStockArticleId, task.getStockArticleId()) |
|
|
|
|
.set(DistributionParcelListEntity::getOrderCode, task.getOrderCode()) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (newStockArticle != null) { |
|
|
|
|
newStockArticle.setTotalNumber(0); |
|
|
|
|
newStockArticle.setHandQuantity(0); |
|
|
|
|
distributionStockArticleService.updateById(newStockArticle); |
|
|
|
|
oldStockArticle.setTotalNumber(oldStockArticle.getTotalNumber() + newStockArticle.getTotalNumber()); |
|
|
|
|
oldStockArticle.setHandQuantity(oldStockArticle.getHandQuantity() + newStockArticle.getHandQuantity()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
distributionStockArticleService.updateById(oldStockArticle); |
|
|
|
|
|
|
|
|
|
distributionSplitOrderDetailService.update(Wrappers.<DistributionSplitOrderDetailEntity>lambdaUpdate() |
|
|
|
|
.eq(DistributionSplitOrderDetailEntity::getSplitOrderTaskId, taskId) |
|
|
|
|
.set(DistributionSplitOrderDetailEntity::getState, OrderPackageSplitStateConstant.cancel.getValue()) |
|
|
|
|
.set(DistributionSplitOrderDetailEntity::getCancelUser, AuthUtil.getUser().getUserId()) |
|
|
|
|
.set(DistributionSplitOrderDetailEntity::getCancelUsername, AuthUtil.getUser().getUserName()) |
|
|
|
|
); |
|
|
|
|
distributionSplitOrderLogService.record(task, "取消拆单任务", AuthUtil.getUser().getUserName()); |
|
|
|
|
|
|
|
|
|
allTask.setNumber(allTask.getNumber() - 1); |
|
|
|
|
allTask.setOrderPackageNumber(allTask.getOrderPackageNumber() - task.getTaskNumber()); |
|
|
|
|
distributionSplitOrderAllTaskService.updateById(allTask); |
|
|
|
|
|
|
|
|
|
task.setIsDeleted(1); |
|
|
|
|
task.setNumber(0); |
|
|
|
|
updateById(task); |
|
|
|
|
|
|
|
|
|
cancelTask(task); |
|
|
|
|
return R.success("success"); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("取消拆单任务系统错误", e); |
|
|
|
@ -607,6 +591,9 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
if (task == null) { |
|
|
|
|
return R.fail("拆单任务不存在"); |
|
|
|
|
} |
|
|
|
|
if (!task.getState().equals(OrderSplitStateConstant.InProgress.getValue())) { |
|
|
|
|
return R.fail("拆单任务不在进行中,无法取消"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
long count = distributionSplitOrderDetailService.count(Wrappers.<DistributionSplitOrderDetailEntity>lambdaQuery() |
|
|
|
|
.in(DistributionSplitOrderDetailEntity::getOrderPackageCode, packageCodes) |
|
|
|
@ -621,11 +608,6 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
msg += "等" + packageCodes.size() + "个包件"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (task.getNumber() == packageCodes.size()) { |
|
|
|
|
distributionSplitOrderLogService.record(task, String.format("取消包件:%s", msg), AuthUtil.getUser().getUserName()); |
|
|
|
|
return deleteTask(taskId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
|
|
|
|
distributionSplitOrderDetailService.update(Wrappers.<DistributionSplitOrderDetailEntity>lambdaUpdate() |
|
|
|
@ -702,6 +684,10 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
newOrder.setTotalNumber(packageList.size()); |
|
|
|
|
newOrder.setHandQuantity(packageList.size()); |
|
|
|
|
newOrder.setIncomingNum(packageList.size()); |
|
|
|
|
newOrder.setCustomerAddress(task.getCustomerAddress()); |
|
|
|
|
newOrder.setCustomerName(task.getCustomerName()); |
|
|
|
|
newOrder.setCustomerTelephone(task.getCustomerTelephone()); |
|
|
|
|
|
|
|
|
|
if (newOrder.getId() != null) { |
|
|
|
|
distributionStockArticleService.updateById(newOrder); |
|
|
|
|
}else{ |
|
|
|
@ -739,19 +725,22 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
cancelTask(task); |
|
|
|
|
task.setState(OrderSplitStateConstant.InProgress.getValue()); |
|
|
|
|
updateById(task); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
if (e instanceof CustomerException) { |
|
|
|
|
throw new CustomerException(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
log.error("撤消拆单任务系统错误", e); |
|
|
|
|
log.error("拆单任务取消完成系统错误", e); |
|
|
|
|
throw new CustomerException("系统错误"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return R.success("操作成功"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 撤销任务 |
|
|
|
|
*/ |
|
|
|
|
public void cancelTask(DistributionSplitOrderTaskEntity task){ |
|
|
|
|
task.setState(OrderSplitStateConstant.cancel.getValue()); |
|
|
|
|
updateById(task); |
|
|
|
@ -915,13 +904,13 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
|
|
|
|
|
List<DistributionSplitOrderAllTaskEntity> list = distributionSplitOrderAllTaskService.list(page, queryWrapper); |
|
|
|
|
|
|
|
|
|
String createUserIds = list.stream().map((d) -> d.getCreateUser() + "").collect(Collectors.joining(",")); |
|
|
|
|
List<User> users = iUserClient.userInfoByIds(AuthUtil.getTenantId(), String.join(",", createUserIds)).getData(); |
|
|
|
|
Map<Long, User> userMap = users.stream().collect(Collectors.toMap(User::getId, u -> u)); |
|
|
|
|
Map<Long, String> userMap = getUserIdNameMap(list.stream().map(DistributionSplitOrderAllTaskEntity::getCreateUser).collect(Collectors.toList())); |
|
|
|
|
Map<Long, Long> allTaskIdPackageNumber = getAllTaskIdPackageNumber(list.stream().map(DistributionSplitOrderAllTaskEntity::getId).collect(Collectors.toList())); |
|
|
|
|
List<DistributionSplitOrderAllTaskVO> listVo = list.stream().map(d -> { |
|
|
|
|
DistributionSplitOrderAllTaskVO vo = new DistributionSplitOrderAllTaskVO(); |
|
|
|
|
BeanUtil.copyProperties(d, vo); |
|
|
|
|
vo.setCreateUserName(userMap.get(d.getCreateUser()).getName()); |
|
|
|
|
vo.setCreateUserName(userMap.get(d.getCreateUser())); |
|
|
|
|
vo.setSplitPackageNumber(allTaskIdPackageNumber.get(d.getId())); |
|
|
|
|
return vo; |
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
@ -932,6 +921,22 @@ public class DistributionSplitOrderTaskServiceImpl extends BaseServiceImpl<Distr
|
|
|
|
|
return R.data(pageResult); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<Long, Long> getAllTaskIdPackageNumber(List<Long> taskIds){ |
|
|
|
|
List<Map<String, Object>> maps = baseMapper.selectMaps( |
|
|
|
|
Wrappers.<DistributionSplitOrderTaskEntity>query() |
|
|
|
|
.select("split_order_all_task_id", "SUM(number) as number") |
|
|
|
|
.eq("split_order_all_task_id", taskIds) |
|
|
|
|
.in("state", OrderSplitStateConstant.InProgress.getValue(), OrderSplitStateConstant.finish.getValue()) |
|
|
|
|
.groupBy("split_order_all_task_id") |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
return maps.stream().collect(Collectors.toMap( |
|
|
|
|
m -> Long.valueOf(m.get("split_order_all_task_id").toString()), |
|
|
|
|
m -> Long.valueOf(m.get("number").toString()) |
|
|
|
|
)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R<Object> getTaskDetail(Long taskId) { |
|
|
|
|
R<List<SplitPackageOrderVO>> PackageOrderList = getPackageCodeByTaskId(taskId); |
|
|
|
|