Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
zhou-hongcheng
2026-03-14 14:20:44 +08:00
9 changed files with 65 additions and 19 deletions
@@ -19,6 +19,8 @@ import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService;
import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService;
import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
@@ -74,6 +76,9 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
@Autowired
private IStockOutOrderService stockOutOrderService;
@Autowired
private IOutMaterialDetailService outMaterialDetailService;
/**
* 查询下发任务列表
*/
@@ -107,34 +112,38 @@ public class DeliveTaskImpl extends ServiceImpl<DeliveTaskMapper, DeliveTask> im
String trackingNumber = deliveTaskPO.getTrackingNumber();
HandoverTaskOrder handoverTaskOrder = handoverTaskOrderService.getOne(new LambdaQueryWrapper<HandoverTaskOrder>()
.eq(HandoverTaskOrder::getTaskNumber, trackingNumber));
if (handoverTaskOrder == null) {
continue;
}
deliveTaskPO.setHandoverStatus(handoverTaskOrder.getStatus());//交接状态: 1-未交接 2-已交接,与PC端保持一致
String orderNumber = handoverTaskOrder.getOrderNumber();//出库单号
PickingOrderDTO pickingOrderDTO = new PickingOrderDTO();
pickingOrderDTO.setOrderNumber(orderNumber);
PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDO(pickingOrderDTO);
PickingOrderPO pickingOrderPOS = pickingOrderService.queryList(pickingOrderDO).get(0);
if (pickingOrderPOS != null){
Integer materialQuantity = pickingOrderPOS.getMaterialQuantity();//物料种类数
List<PickingOrderPO> pickingList = pickingOrderService.queryList(pickingOrderDO);
if (!pickingList.isEmpty()) {
PickingOrderPO pickingOrderPOS = pickingList.get(0);
BigDecimal pickingQuantity = pickingOrderPOS.getPickingQuantity();//已拣货数量
deliveTaskPO.setMaterialQuantity(materialQuantity);
deliveTaskPO.setPickingQuantity(pickingQuantity);
}
StockOutOrderDTO stockOutOrderDTO = new StockOutOrderDTO();
stockOutOrderDTO.setOutOrderNumber(orderNumber);
StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
StockOutOrderPO checkInfo = null;
try {
checkInfo = stockOutOrderApplicationService.getCheckInfo(stockOutOrderDO);
BigDecimal checkQuantity = checkInfo.getCheckQuantity();//复核数量
deliveTaskPO.setCheckQuantity(checkQuantity);
} catch (Exception e) {
}
// 物料种类数:从出库明细按料号去重统计
long materialQuantity = outMaterialDetailService.list(new LambdaQueryWrapper<OutMaterialDetail>()
.eq(OutMaterialDetail::getOutOrderNumber, orderNumber))
.stream()
.map(d -> d.getMaterialCode() != null && !d.getMaterialCode().isEmpty() ? d.getMaterialCode() : d.getMaterialNo())
.filter(c -> c != null && !c.isEmpty())
.distinct()
.count();
deliveTaskPO.setMaterialQuantity((int) materialQuantity);
// 已复核数量、出库单信息:直接从出库单获取(getCheckInfo仅支持复核中状态会抛异常)
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
.eq(StockOutOrder::getOutOrderNumber, orderNumber));
if (stockOutOrder != null){
if (stockOutOrder != null) {
deliveTaskPO.setOutOrderNumber(stockOutOrder.getOutOrderNumber());
deliveTaskPO.setOutOrderStatus(stockOutOrder.getStatus());
deliveTaskPO.setShipperName(stockOutOrder.getShipperName());
deliveTaskPO.setCarrier(stockOutOrder.getCarrier());
deliveTaskPO.setCheckQuantity(stockOutOrder.getCheckQuantity());//已复核数量
}
}
}
@@ -128,9 +128,12 @@ public class DeliveTaskPO extends BaseVOEntity {
@ApiModelProperty("出库单号")
private String outOrderNumber;
@ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭")
@ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核")
private Integer outOrderStatus;
@ApiModelProperty("交接状态(taskType=7时使用): 1-未交接 2-已交接,PDA列表状态展示应优先使用此字段与PC端保持一致")
private Integer handoverStatus;
@ApiModelProperty("货主名称")
private String shipperName;
@@ -124,6 +124,15 @@ public class HandoverTaskOrderPO extends BaseVOEntity {
@Excel(name = "备注")
private String remark;
@ApiModelProperty("任务是否下发: 1-是 2-否")
@Excel(name = "任务是否下发: 1-是 2-否")
private Integer taskDistribution;
@ApiModelProperty("任务下发时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date taskDistributionTime;
@ApiModelProperty("app上传的图片")
private String pictureApp;
@@ -97,6 +97,10 @@ public class OutMaterialDetailPO extends StockOutOrderBaseDO {
@Excel(name = "待复核数量")
private BigDecimal waitCheckQuantity;
@ApiModelProperty("复核数量输入框字段,默认等于待复核数量")
@TableField(exist = false)
private BigDecimal actualQuantity;
@ApiModelProperty("净重 单位:千克")
@Excel(name = "净重 单位:千克")
private BigDecimal weightLimit;
@@ -505,6 +505,9 @@ public class StockOutOrderDomainService {
OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO();
outMaterialDetailDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber());
List<OutMaterialDetailPO> materialDetailPOList = outMaterialDetailService.queryList(outMaterialDetailDO);
materialDetailPOList.forEach(d -> {
if (d.getWaitCheckQuantity() != null) d.setActualQuantity(d.getWaitCheckQuantity());
});
stockOutOrderPO.setMaterialDetailList(materialDetailPOList);
return stockOutOrderPO;
}
@@ -279,6 +279,12 @@ public class StockOutTaskOrderDomainService {
//判断拣货数量是否等于计划数量
Integer pickingStatus = judgePickingQuantity(pickingQuantity, quantity);
taskStoragePO.setPickingStatus(pickingStatus);
// actualQuantity 为输入框字段默认等于待拣货数量 PDA 表单默认展示
for (TaskPickingMaterialDetailPO d : incompleteList) {
if (d.getWaitPickingQuantity() != null) {
d.setActualQuantity(d.getWaitPickingQuantity());
}
}
taskStoragePO.setTaskPickingMaterialDetailList(incompleteList);
taskStoragePOList.add(taskStoragePO);
}
@@ -321,6 +327,12 @@ public class StockOutTaskOrderDomainService {
//判断拣货数量是否等于计划数量
Integer pickingStatus = judgePickingQuantity(pickingQuantity, quantity);
taskMaterialPO.setPickingStatus(pickingStatus);
// actualQuantity 为输入框字段默认等于待拣货数量 PDA 表单默认展示
for (TaskPickingMaterialDetailPO d : taskPickingMaterialDetailPOListByMaterial) {
if (d.getWaitPickingQuantity() != null) {
d.setActualQuantity(d.getWaitPickingQuantity());
}
}
taskMaterialPO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailPOListByMaterial);
taskMaterialPOList.add(taskMaterialPO);
if (pickingStatus > 2){
@@ -86,6 +86,9 @@ public class TaskPickingMaterialDetailPO extends BaseVOEntity {
@Excel(name = "待拣货数量")
private BigDecimal waitPickingQuantity;
@ApiModelProperty("本次拣货数量,PDA 输入框字段,默认等于待拣货数量")
private BigDecimal actualQuantity;
@ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货")
@Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣")
private Integer pickingStatus;
@@ -21,6 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="allocationQuantity" column="allocation_quantity" />
<result property="pickingQuantity" column="picking_quantity" />
<result property="checkQuantity" column="check_quantity" />
<result property="waitCheckQuantity" column="WAIT_CHECK_QUANTITY" />
<result property="packId" column="pack_id" />
<result property="packCode" column="pack_code" />
<result property="packName" column="pack_name" />
@@ -88,7 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectMaterialDetailPo">
a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.out_order_number, a.material_base_info_id, a.line_number, a.material_code, a.material_name, a.bar_code, a.weight_limit, a.volume_limit,
a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND((a.quantity - a.check_quantity), 2) AS wait_check_quantity,
a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND(GREATEST(0, IFNULL(a.quantity, 0) - IFNULL(a.check_quantity, 0), IFNULL(a.picking_quantity, 0) - IFNULL(a.check_quantity, 0)), 2) AS wait_check_quantity,
a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage,
a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.level, a.parent_unique_id, a.allow_modify,
a.material_inventory_id, a.batch_number, a.container_id, a.container_code, a.container_type, a.container_type_name, a.material_status_code, a.material_status_name,
@@ -30,6 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="orderNumber" column="order_number" />
<result property="pickingOrderNumber" column="picking_order_number" />
<result property="remark" column="remark" />
<result property="taskDistribution" column="task_distribution" />
<result property="taskDistributionTime" column="task_distribution_time" />
<result property="createTime" column="create_time" />
<result property="createBy" column="create_by" />
<result property="createByName" column="create_by_name" />
@@ -44,8 +46,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectHandoverTaskOrderPo">
a.handover_task_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.serial_number, a.task_number, a.status, a.platform_id,
a.platform_code, a.platform_name, a.platform_use_time_id, a.platform_use_start_time, a.platform_use_end_time, a.platform_use_status,
a.order_type_code, a.order_type_name, a.expect_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id,
a.shipper_name, a.order_number, a.picking_order_number, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time,
a.order_type_code, a.order_type_name, a.expect_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id,
a.shipper_name, a.order_number, a.picking_order_number, a.remark, a.task_distribution, a.task_distribution_time, a.create_time, a.create_by, a.create_by_name, a.update_time,
a.update_by, a.update_by_name, a.del_flag, a.picture_app
</sql>