PDA自动下发任务领取
This commit is contained in:
+26
-2
@@ -1,6 +1,8 @@
|
||||
package com.mhd.wms.application.service.deliveTask;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
|
||||
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
|
||||
import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
|
||||
@@ -47,8 +49,17 @@ public class DeliveTaskApplicationService {
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
// 只查询下发给当前登录用户的任务(对应 task_distribution_id = 当前用户)
|
||||
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
|
||||
applyPdaWarehouseScope(deliveTaskDO, loginUser);
|
||||
Long tabType = deliveTaskDO.getTabType();
|
||||
if (tabType != null && tabType == 1L) {
|
||||
// 指派给我的:已接收(operators_by = 当前用户)
|
||||
deliveTaskDO.setOperatorsBy(loginUser.getUserid());
|
||||
} else if (tabType == null || tabType == 2L) {
|
||||
// 任务大厅:未领取任务池(含入库审核收货、出库生成拣货单等自动下发的任务),不按下发人过滤
|
||||
if (tabType == null) {
|
||||
deliveTaskDO.setTabType(2L);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 不按 task_status 默认过滤;若请求传入 taskStatus 则仍可按状态筛选
|
||||
return deliveTaskDomainService.queryListApp(deliveTaskDO);
|
||||
@@ -107,10 +118,23 @@ public class DeliveTaskApplicationService {
|
||||
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
deliveTaskDO.setOperatorsBy(loginUser.getUserid());
|
||||
}
|
||||
applyPdaWarehouseScope(deliveTaskDO, loginUser);
|
||||
}
|
||||
return deliveTaskDomainService.querySum(deliveTaskDO);
|
||||
}
|
||||
|
||||
/** PDA:按用户绑定仓库过滤任务(与收货/上架等 App 列表一致) */
|
||||
private static void applyPdaWarehouseScope(DeliveTaskDO deliveTaskDO, LoginUser loginUser) {
|
||||
if (deliveTaskDO.getWarehouseId() != null) {
|
||||
return;
|
||||
}
|
||||
AssociationWarehouseCacheDO warehouseCache =
|
||||
SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
|
||||
if (warehouseCache != null && warehouseCache.getWarehouseId() != null) {
|
||||
deliveTaskDO.setWarehouseId(warehouseCache.getWarehouseId());
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean forward(DeliveTaskDO deliveTaskDO) {
|
||||
return deliveTaskDomainService.updateById(deliveTaskDO);
|
||||
}
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
|
||||
@Override
|
||||
public List<DeliveTaskPO> queryListApp(DeliveTaskDO deliveTaskDO)
|
||||
{
|
||||
// App 列表条件见 DeliveTaskMapper.queryListApp / selectDeliveTaskPoApp1(不按 tabType、operators_by 过滤)
|
||||
// App 列表条件见 DeliveTaskMapper.queryListApp / selectDeliveTaskPoApp1(tabType=2 任务大厅 / tabType=1 指派给我)
|
||||
List<DeliveTaskPO> deliveTaskPOS = deliveTaskMapper.queryListApp(deliveTaskDO);
|
||||
if (deliveTaskDO.getTaskType() == 7){
|
||||
statistics(deliveTaskPOS);
|
||||
|
||||
+50
-4
@@ -14,6 +14,7 @@ import com.mhd.common.core.utils.bean.BeanUtils;
|
||||
import com.mhd.common.core.utils.uuid.IdGenerator;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
|
||||
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
|
||||
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
|
||||
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
|
||||
@@ -932,15 +933,20 @@ public class PickingOrderDomainService {
|
||||
: loginUser.getUsername();
|
||||
List<DeliveTaskDO> deliveTaskDOList = new ArrayList<>();
|
||||
for (StockOutTaskOrderDO stockOutTaskOrderDO : stockOutTaskOrderDOList){
|
||||
if (StringUtils.isNotBlank(stockOutTaskOrderDO.getTaskNumber())
|
||||
&& deliveTaskService.count(new LambdaQueryWrapper<DeliveTask>()
|
||||
.eq(DeliveTask::getTrackingNumber, stockOutTaskOrderDO.getTaskNumber())
|
||||
.eq(DeliveTask::getTaskType, 3)
|
||||
.eq(DeliveTask::getDelFlag, 1)) > 0) {
|
||||
continue;
|
||||
}
|
||||
DeliveTaskDO deliveTaskDO = new DeliveTaskDO();
|
||||
deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
||||
deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
||||
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW"));
|
||||
deliveTaskDO.setTrackingNumber(stockOutTaskOrderDO.getTaskNumber());
|
||||
deliveTaskDO.setWarehouseId(stockOutTaskOrderDO.getWarehouseId());
|
||||
deliveTaskDO.setWarehouseCode(stockOutTaskOrderDO.getWarehouseCode());
|
||||
deliveTaskDO.setWarehouseName(stockOutTaskOrderDO.getWarehouseName());
|
||||
fillPickingDeliveTaskWarehouse(deliveTaskDO, stockOutTaskOrderDO);
|
||||
deliveTaskDO.setTaskType(3);
|
||||
deliveTaskDO.setTaskDistribution(1);
|
||||
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
|
||||
@@ -954,6 +960,46 @@ public class PickingOrderDomainService {
|
||||
deliveTaskDO.setCreateTime(new Date());
|
||||
deliveTaskDOList.add(deliveTaskDO);
|
||||
}
|
||||
deliveTaskService.batchInsert(deliveTaskDOList);
|
||||
if (!deliveTaskDOList.isEmpty()) {
|
||||
deliveTaskService.batchInsert(deliveTaskDOList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拣货类 delive_task 仓库:优先作业单/拣货单,否则按来源单号查出库单或波次单仓库(供 PDA 任务大厅按绑定仓库过滤)。
|
||||
*/
|
||||
private void fillPickingDeliveTaskWarehouse(DeliveTaskDO deliveTaskDO, StockOutTaskOrderDO stockOutTaskOrderDO) {
|
||||
Long warehouseId = stockOutTaskOrderDO.getWarehouseId();
|
||||
String warehouseCode = stockOutTaskOrderDO.getWarehouseCode();
|
||||
String warehouseName = stockOutTaskOrderDO.getWarehouseName();
|
||||
if (warehouseId != null && warehouseId != 0L) {
|
||||
deliveTaskDO.setWarehouseId(warehouseId);
|
||||
deliveTaskDO.setWarehouseCode(warehouseCode);
|
||||
deliveTaskDO.setWarehouseName(warehouseName);
|
||||
return;
|
||||
}
|
||||
String orderNumber = stockOutTaskOrderDO.getOrderNumber();
|
||||
if (StringUtils.isBlank(orderNumber)) {
|
||||
return;
|
||||
}
|
||||
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
|
||||
.eq(StockOutOrder::getOutOrderNumber, orderNumber)
|
||||
.eq(StockOutOrder::getDelFlag, 1)
|
||||
.last("LIMIT 1"));
|
||||
if (stockOutOrder != null && stockOutOrder.getWarehouseId() != null) {
|
||||
deliveTaskDO.setWarehouseId(stockOutOrder.getWarehouseId());
|
||||
deliveTaskDO.setWarehouseCode(stockOutOrder.getWarehouseCode());
|
||||
deliveTaskDO.setWarehouseName(stockOutOrder.getWarehouseName());
|
||||
return;
|
||||
}
|
||||
WaveOrder waveOrder = waveOrderService.getOne(new LambdaQueryWrapper<WaveOrder>()
|
||||
.eq(WaveOrder::getWaveOrderNumber, orderNumber)
|
||||
.eq(WaveOrder::getDelFlag, 1)
|
||||
.last("LIMIT 1"));
|
||||
if (waveOrder != null && waveOrder.getWarehouseId() != null) {
|
||||
deliveTaskDO.setWarehouseId(waveOrder.getWarehouseId());
|
||||
deliveTaskDO.setWarehouseCode(waveOrder.getWarehouseCode());
|
||||
deliveTaskDO.setWarehouseName(waveOrder.getWarehouseName());
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
@@ -630,6 +630,11 @@ public class StockOutOrderDomainService {
|
||||
pickingOrderDO.setOrderNumber(p.getOutOrderNumber());
|
||||
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
||||
pickingOrderDO.setQuantity(p.getAllocationQuantity());
|
||||
if (pickingOrderDO.getWarehouseId() == null && p.getWarehouseId() != null) {
|
||||
pickingOrderDO.setWarehouseId(p.getWarehouseId());
|
||||
pickingOrderDO.setWarehouseCode(p.getWarehouseCode());
|
||||
pickingOrderDO.setWarehouseName(p.getWarehouseName());
|
||||
}
|
||||
List<OutMaterialDetailPO> outMaterialDetailPOS = outMaterialDetailPOListMap.get(p.getOutOrderNumber());
|
||||
// 出库单头 warehouse_code 常为空,用已分配明细(含子行)第一条有仓库编码的行兜底
|
||||
OutMaterialDetailPO warehouseFromDetail = firstOutDetailWithWarehouse(outMaterialDetailPOS);
|
||||
|
||||
+3
-3
@@ -31,9 +31,9 @@ public class DeliveTaskAppApi extends BaseController {
|
||||
private DeliveTaskAssembler deliveTaskAssembler;
|
||||
|
||||
/**
|
||||
* 分页查询下发任务列表。条件:del_flag=1、当前一级组织、请求参数 warehouseId、
|
||||
* task_distribution_id=当前登录用户;不按 task_status 过滤(入参传入 taskStatus 时可选筛状态)。
|
||||
* 与 PC 列表不同,不按 tabType/operators_by 过滤。
|
||||
* 分页查询下发任务列表。条件:del_flag=1、当前一级组织、绑定仓库(未传 warehouseId 时取用户仓库绑定)、
|
||||
* {@code tabType=2} 任务大厅(operators_by 为空,含收货/上架/拣货等自动下发任务)、
|
||||
* {@code tabType=1} 指派给我的(operators_by=当前用户);不按 task_status 默认过滤。
|
||||
*/
|
||||
@ApiOperation("查询下发任务列表")
|
||||
@GetMapping("/list")
|
||||
|
||||
@@ -138,7 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
<!-- PDA 下发任务列表:与 del_flag、top_organization_id、warehouse_id、task_status、task_distribution_id 为主条件,不按 operators_by/tabType 过滤 -->
|
||||
<!-- PDA 下发任务列表:del_flag、组织、仓库、tabType(1=指派给我/2=任务大厅未领取) 等 -->
|
||||
<sql id="selectDeliveTaskPoApp1">
|
||||
<where>
|
||||
del_flag = 1
|
||||
@@ -196,6 +196,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="taskDistributionName != null and taskDistributionName != ''">
|
||||
and task_distribution_name like concat('%', #{taskDistributionName}, '%')
|
||||
</if>
|
||||
<if test="tabType != null and tabType==1">
|
||||
and operators_by = #{operatorsBy}
|
||||
</if>
|
||||
<if test="tabType != null and tabType==2">
|
||||
and operators_by IS NULL
|
||||
</if>
|
||||
<if test="operatorsName != null and operatorsName != ''">
|
||||
and operators_name like concat('%', #{operatorsName}, '%')
|
||||
</if>
|
||||
|
||||
Reference in New Issue
Block a user