PDA自动下发任务领取
This commit is contained in:
+26
-2
@@ -1,6 +1,8 @@
|
|||||||
package com.mhd.wms.application.service.deliveTask;
|
package com.mhd.wms.application.service.deliveTask;
|
||||||
|
|
||||||
import com.mhd.common.security.utils.SecurityUtils;
|
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.system.api.model.LoginUser;
|
||||||
import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
|
import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
|
||||||
import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
|
import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
|
||||||
@@ -47,8 +49,17 @@ public class DeliveTaskApplicationService {
|
|||||||
if (topOrganizationId != null && topOrganizationId != 1){
|
if (topOrganizationId != null && topOrganizationId != 1){
|
||||||
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||||
}
|
}
|
||||||
// 只查询下发给当前登录用户的任务(对应 task_distribution_id = 当前用户)
|
applyPdaWarehouseScope(deliveTaskDO, loginUser);
|
||||||
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
|
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 则仍可按状态筛选
|
// 不按 task_status 默认过滤;若请求传入 taskStatus 则仍可按状态筛选
|
||||||
return deliveTaskDomainService.queryListApp(deliveTaskDO);
|
return deliveTaskDomainService.queryListApp(deliveTaskDO);
|
||||||
@@ -107,10 +118,23 @@ public class DeliveTaskApplicationService {
|
|||||||
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||||
deliveTaskDO.setOperatorsBy(loginUser.getUserid());
|
deliveTaskDO.setOperatorsBy(loginUser.getUserid());
|
||||||
}
|
}
|
||||||
|
applyPdaWarehouseScope(deliveTaskDO, loginUser);
|
||||||
}
|
}
|
||||||
return deliveTaskDomainService.querySum(deliveTaskDO);
|
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) {
|
public Boolean forward(DeliveTaskDO deliveTaskDO) {
|
||||||
return deliveTaskDomainService.updateById(deliveTaskDO);
|
return deliveTaskDomainService.updateById(deliveTaskDO);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -99,7 +99,7 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
|
|||||||
@Override
|
@Override
|
||||||
public List<DeliveTaskPO> queryListApp(DeliveTaskDO deliveTaskDO)
|
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);
|
List<DeliveTaskPO> deliveTaskPOS = deliveTaskMapper.queryListApp(deliveTaskDO);
|
||||||
if (deliveTaskDO.getTaskType() == 7){
|
if (deliveTaskDO.getTaskType() == 7){
|
||||||
statistics(deliveTaskPOS);
|
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.core.utils.uuid.IdGenerator;
|
||||||
import com.mhd.common.security.utils.SecurityUtils;
|
import com.mhd.common.security.utils.SecurityUtils;
|
||||||
import com.mhd.system.api.model.LoginUser;
|
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.facade.IDeliveTaskService;
|
||||||
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
|
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
|
||||||
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
|
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
|
||||||
@@ -932,15 +933,20 @@ public class PickingOrderDomainService {
|
|||||||
: loginUser.getUsername();
|
: loginUser.getUsername();
|
||||||
List<DeliveTaskDO> deliveTaskDOList = new ArrayList<>();
|
List<DeliveTaskDO> deliveTaskDOList = new ArrayList<>();
|
||||||
for (StockOutTaskOrderDO stockOutTaskOrderDO : stockOutTaskOrderDOList){
|
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 deliveTaskDO = new DeliveTaskDO();
|
||||||
deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
||||||
deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
||||||
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||||
deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW"));
|
deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW"));
|
||||||
deliveTaskDO.setTrackingNumber(stockOutTaskOrderDO.getTaskNumber());
|
deliveTaskDO.setTrackingNumber(stockOutTaskOrderDO.getTaskNumber());
|
||||||
deliveTaskDO.setWarehouseId(stockOutTaskOrderDO.getWarehouseId());
|
fillPickingDeliveTaskWarehouse(deliveTaskDO, stockOutTaskOrderDO);
|
||||||
deliveTaskDO.setWarehouseCode(stockOutTaskOrderDO.getWarehouseCode());
|
|
||||||
deliveTaskDO.setWarehouseName(stockOutTaskOrderDO.getWarehouseName());
|
|
||||||
deliveTaskDO.setTaskType(3);
|
deliveTaskDO.setTaskType(3);
|
||||||
deliveTaskDO.setTaskDistribution(1);
|
deliveTaskDO.setTaskDistribution(1);
|
||||||
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
|
deliveTaskDO.setTaskDistributionId(loginUser.getUserid());
|
||||||
@@ -954,6 +960,46 @@ public class PickingOrderDomainService {
|
|||||||
deliveTaskDO.setCreateTime(new Date());
|
deliveTaskDO.setCreateTime(new Date());
|
||||||
deliveTaskDOList.add(deliveTaskDO);
|
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.setOrderNumber(p.getOutOrderNumber());
|
||||||
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH"));
|
||||||
pickingOrderDO.setQuantity(p.getAllocationQuantity());
|
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());
|
List<OutMaterialDetailPO> outMaterialDetailPOS = outMaterialDetailPOListMap.get(p.getOutOrderNumber());
|
||||||
// 出库单头 warehouse_code 常为空,用已分配明细(含子行)第一条有仓库编码的行兜底
|
// 出库单头 warehouse_code 常为空,用已分配明细(含子行)第一条有仓库编码的行兜底
|
||||||
OutMaterialDetailPO warehouseFromDetail = firstOutDetailWithWarehouse(outMaterialDetailPOS);
|
OutMaterialDetailPO warehouseFromDetail = firstOutDetailWithWarehouse(outMaterialDetailPOS);
|
||||||
|
|||||||
+3
-3
@@ -31,9 +31,9 @@ public class DeliveTaskAppApi extends BaseController {
|
|||||||
private DeliveTaskAssembler deliveTaskAssembler;
|
private DeliveTaskAssembler deliveTaskAssembler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询下发任务列表。条件:del_flag=1、当前一级组织、请求参数 warehouseId、
|
* 分页查询下发任务列表。条件:del_flag=1、当前一级组织、绑定仓库(未传 warehouseId 时取用户仓库绑定)、
|
||||||
* task_distribution_id=当前登录用户;不按 task_status 过滤(入参传入 taskStatus 时可选筛状态)。
|
* {@code tabType=2} 任务大厅(operators_by 为空,含收货/上架/拣货等自动下发任务)、
|
||||||
* 与 PC 列表不同,不按 tabType/operators_by 过滤。
|
* {@code tabType=1} 指派给我的(operators_by=当前用户);不按 task_status 默认过滤。
|
||||||
*/
|
*/
|
||||||
@ApiOperation("查询下发任务列表")
|
@ApiOperation("查询下发任务列表")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</sql>
|
</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">
|
<sql id="selectDeliveTaskPoApp1">
|
||||||
<where>
|
<where>
|
||||||
del_flag = 1
|
del_flag = 1
|
||||||
@@ -196,6 +196,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="taskDistributionName != null and taskDistributionName != ''">
|
<if test="taskDistributionName != null and taskDistributionName != ''">
|
||||||
and task_distribution_name like concat('%', #{taskDistributionName}, '%')
|
and task_distribution_name like concat('%', #{taskDistributionName}, '%')
|
||||||
</if>
|
</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 != ''">
|
<if test="operatorsName != null and operatorsName != ''">
|
||||||
and operators_name like concat('%', #{operatorsName}, '%')
|
and operators_name like concat('%', #{operatorsName}, '%')
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
Reference in New Issue
Block a user