批量退货

main
HUOJIN\92525 2025-04-08 17:59:10 +08:00
parent 914d45a479
commit 104d17606a
14 changed files with 327 additions and 54 deletions

View File

@ -66,4 +66,8 @@ public class AdminCacheConst extends CacheKeyConst {
public static final String CUSTOMER_ENTITY = "customer_cache";
}
public static class itemKey {
public static final String ITEM_KEY_ENTITY = "item_key_cache";
}
}

View File

@ -1,11 +1,18 @@
package net.lab1024.sa.admin.module.business.wms.itemKey.manager;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.constant.AdminCacheConst;
import net.lab1024.sa.admin.module.business.wms.base.location.dao.LocationDao;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.dao.ItemKeyDao;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.lab1024.sa.admin.module.business.wms.itemKey.dao.ItemKeyDao;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
/**
@ -16,7 +23,22 @@ import org.springframework.stereotype.Service;
* @Copyright
*/
@Service
@Slf4j
public class ItemKeyManager extends ServiceImpl<ItemKeyDao, ItemKeyEntity> {
@Resource
private ItemKeyDao itemKeyDao;
/**
* id
*/
@CacheEvict(value = {AdminCacheConst.itemKey.ITEM_KEY_ENTITY}, allEntries = true)
public void removeCache() {
log.info("clear ITEM_KEY_ENTITY");
}
@Cacheable(AdminCacheConst.itemKey.ITEM_KEY_ENTITY)
public ItemKeyEntity queryItemKey(Long itemKeyId) {
return itemKeyDao.selectById(itemKeyId);
}
}

View File

@ -2,7 +2,9 @@ package net.lab1024.sa.admin.module.business.wms.itemKey.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps;
import jakarta.annotation.Resource;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.dao.ItemKeyDao;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.form.ItemKeyQueryForm;
@ -11,12 +13,16 @@ import net.lab1024.sa.admin.module.business.wms.itemKey.dao.ItemKeyDao;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.form.ItemKeyQueryForm;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.vo.ItemKeyVO;
import net.lab1024.sa.admin.module.business.wms.itemKey.manager.ItemKeyManager;
import net.lab1024.sa.base.common.domain.PageResult;
import net.lab1024.sa.base.common.util.SmartPageUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class ItemKeyQueryService {
@ -24,6 +30,9 @@ public class ItemKeyQueryService {
@Resource
private ItemKeyDao itemKeyDao;
@Resource
private ItemKeyManager itemKeyManager;
/**
*
*/
@ -33,6 +42,27 @@ public class ItemKeyQueryService {
return SmartPageUtil.convert2PageResult(page, list);
}
/**
* ID
*
* @param itemKeyIdList ID
* @return Map<Long, ItemKeyEntity>
*/
public Map<Long, ItemKeyEntity> queryItemKeyList(List<Long> itemKeyIdList) {
if (CollectionUtils.isEmpty(itemKeyIdList)) {
return Collections.emptyMap();
}
itemKeyIdList = itemKeyIdList.stream().distinct().collect(Collectors.toList());
Map<Long, ItemKeyEntity> itemKeyMap = Maps.newHashMap();
for (Long itemKeyId : itemKeyIdList) {
ItemKeyEntity itemKey = itemKeyManager.queryItemKey(itemKeyId);
if (itemKey != null) {
itemKeyMap.put(itemKeyId, itemKey);
}
}
return itemKeyMap;
}
public ItemKeyEntity queryItemKey(String orderNumber, Long itemId, String propC1) {
LambdaQueryWrapper<ItemKeyEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ItemKeyEntity::getOrderNumber, orderNumber);

View File

@ -4,14 +4,18 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import net.lab1024.sa.admin.module.business.wms.receive.asn.domain.form.BatchReceiveForm;
import net.lab1024.sa.admin.module.business.wms.receive.asn.domain.form.BatchReturnForm;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.domain.ValidateList;
import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Tag(name = "收货")
@OperateLog
public class ReceiveController {
@Resource
@ -20,7 +24,14 @@ public class ReceiveController {
@Operation(summary = "批量收货 @author 霍锦")
@PostMapping("/receive/batchReceive")
@SaCheckPermission("receive:batchReceive")
public ResponseDTO<String> batchReceive(@RequestBody ValidateList<Long> idList) {
return receiveService.batchReceive(idList);
public ResponseDTO<String> batchReceive(@RequestBody BatchReceiveForm batchReceiveForm) {
return receiveService.batchReceive(batchReceiveForm);
}
@Operation(summary = "批量退货 @author 霍锦")
@PostMapping("/receive/batchReturn")
@SaCheckPermission("receive:batchReturn")
public ResponseDTO<String> batchReturn(@RequestBody BatchReturnForm batchReturnForm) {
return receiveService.batchReturn(batchReturnForm);
}
}

View File

@ -18,7 +18,10 @@ import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEnt
import net.lab1024.sa.admin.module.business.wms.itemKey.manager.ItemKeyManager;
import net.lab1024.sa.admin.module.business.wms.itemKey.service.ItemKeyQueryService;
import net.lab1024.sa.admin.module.business.wms.itemKey.service.ItemKeyService;
import net.lab1024.sa.admin.module.business.wms.receive.asn.dao.AsnDao;
import net.lab1024.sa.admin.module.business.wms.receive.asn.domain.entity.AsnEntity;
import net.lab1024.sa.admin.module.business.wms.receive.asn.domain.form.BatchReceiveForm;
import net.lab1024.sa.admin.module.business.wms.receive.asn.domain.form.BatchReturnForm;
import net.lab1024.sa.admin.module.business.wms.receive.asn.service.AsnQueryService;
import net.lab1024.sa.admin.module.business.wms.receive.asnDetail.domain.entity.AsnDetailEntity;
import net.lab1024.sa.admin.module.business.wms.receive.asnDetail.domain.vo.AsnDetailVO;
@ -29,6 +32,7 @@ import net.lab1024.sa.admin.module.business.wms.task.constant.TaskStatusEnum;
import net.lab1024.sa.admin.module.business.wms.task.constant.TaskTypeEnum;
import net.lab1024.sa.admin.module.business.wms.task.domain.entity.TaskEntity;
import net.lab1024.sa.admin.module.business.wms.task.manager.TaskManager;
import net.lab1024.sa.admin.module.business.wms.task.service.TaskQueryService;
import net.lab1024.sa.admin.module.business.wms.task.service.TaskService;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import net.lab1024.sa.admin.module.business.wms.receive.asn.service.AsnQueryService;
@ -46,9 +50,12 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class ReceiveService {
@Resource
private AsnDao asnDao;
@Resource
private AsnDetailManager asnDetailManager;
@ -69,10 +76,10 @@ public class ReceiveService {
private ItemQueryService itemQueryService;
@Resource
private AsnQueryService asnQueryService;
private AsnDetailQueryService asnDetailQueryService;
@Resource
private AsnDetailQueryService asnDetailQueryService;
private TaskQueryService taskQueryService;
@Resource
private InventoryQueryService inventoryQueryService;
@ -96,25 +103,15 @@ public class ReceiveService {
/**
*
*
* @param idList id
* @param batchReceiveForm
* @return ResponseDTO<String>
*/
@Transactional(rollbackFor = Exception.class)
public ResponseDTO<String> batchReceive(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)) {
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
}
List<AsnDetailEntity> asnDetails = asnDetailQueryService.queryAsnDetailList(idList);
public ResponseDTO<String> batchReceive(BatchReceiveForm batchReceiveForm) {
List<AsnDetailEntity> asnDetails = asnDetailQueryService.queryAsnDetailList(batchReceiveForm.getAsnDetailIds());
if (CollectionUtils.isEmpty(asnDetails)) {
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
}
return batchReceive(asnDetails, null, null);
}
@Transactional(rollbackFor = Exception.class)
public synchronized ResponseDTO<String> batchReceive(List<AsnDetailEntity> asnDetails, String stockCode, String locationCode) {
//消息提示
JoinerResult joiner = JoinerResult.createJoiner();
@ -122,28 +119,24 @@ public class ReceiveService {
List<Long> itemIds = asnDetails.stream().map(AsnDetailEntity::getItemId).distinct().toList();
Map<Long, ItemEntity> itemMap = itemQueryService.queryItemList(itemIds);
//查询入库单
List<Long> asnIds = asnDetails.stream().map(AsnDetailEntity::getAsnId).distinct().toList();
Map<Long, AsnEntity> asnMap = asnQueryService.queryAsnListToMap(asnIds);
List<AsnDetailEntity> updateToAsnDetail = new ArrayList<>();
List<TaskEntity> insertToTask = new ArrayList<>();
List<InventoryEntity> insertToInventory = new ArrayList<>();
List<InventoryEntity> updateToInventory = new ArrayList<>();
//库位
LocationEntity dstLocation = locationQueryService.queryByLocationCode(locationCode);
LocationEntity dstLocation = locationQueryService.queryByLocationCode(batchReceiveForm.getLocationCode());
//容器
StockEntity dstStock = stockQueryService.queryByStockCode(stockCode);
StockEntity dstStock = stockQueryService.queryByStockCode(batchReceiveForm.getStockCode());
//入库单
AsnEntity asn = asnDao.selectById(batchReceiveForm.getAsnId());
for (AsnDetailEntity asnDetail : asnDetails) {
//物料
ItemEntity item = itemMap.get(asnDetail.getItemId());
//入库单
AsnEntity asn = asnMap.get(asnDetail.getAsnId());
if (SmartBigDecimalUtil.subtract(asnDetail.getOrderQuantity(), asnDetail.getReceivedQuantity(), 2).compareTo(BigDecimal.ZERO) == 0) {
joiner.getErrorMsg().add(item.getItemCode() + "明细已收货");
continue;
@ -163,9 +156,15 @@ public class ReceiveService {
//生成入库记录
TaskEntity task = taskService.createTask(serialNumberService.generate(SerialNumberIdEnum.TASK), TaskStatusEnum.CREATED.getValue(), TaskTypeEnum.ASN.getValue(), asnDetail.getOrderQuantity(), itemKey.getItemKeyId(), asnDetail.getAsnDetailId(), null, null, dstStock, null, dstLocation, null, null);
task.setMoveQty(task.getPlanQty());
if (SmartBigDecimalUtil.subtract(task.getPlanQty(), task.getMoveQty(), 2).compareTo(BigDecimal.ZERO) == 0) {
task.setStatus(TaskStatusEnum.COMPLETED.getValue());
} else {
task.setStatus(TaskStatusEnum.IN_PROGRESS.getValue());
}
insertToTask.add(task);
//生成库存
//生成库存记录
InventoryEntity inventory = inventoryQueryService.queryInventory(itemKey.getItemKeyId());
if (inventory == null) {
inventory = inventoryService.createInventory(itemKey.getItemKeyId(), dstLocation == null ? null : dstLocation.getLocationId(), dstStock == null ? null : dstStock.getStockId(), asnDetail.getOrderQuantity());
@ -176,6 +175,8 @@ public class ReceiveService {
updateToInventory.add(inventory);
}
//生成库存日志
joiner.getSussMsg().add(item.getItemCode() + "收货成功");
}
@ -183,7 +184,7 @@ public class ReceiveService {
batchUpdateOrInsert(updateToAsnDetail, insertToTask, insertToInventory, updateToInventory);
//刷新入库单
asnIds.forEach(asnDetailService::refreshAsn);
asnDetailService.refreshAsn(batchReceiveForm.getAsnId());
return ResponseDTOUtils.buildResponseDTO(joiner);
}
@ -219,5 +220,100 @@ public class ReceiveService {
}
/**
* 退
*
* @param batchReturnForm 退
* @return ResponseDTO<String>
*/
@Transactional(rollbackFor = Exception.class)
public ResponseDTO<String> batchReturn(BatchReturnForm batchReturnForm) {
List<TaskEntity> tasks = taskQueryService.queryByTaskIds(batchReturnForm.getTaskIds());
if (CollectionUtils.isEmpty(tasks)) {
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
}
//消息提示
JoinerResult joiner = JoinerResult.createJoiner();
//查询Task任务关联的所以入库明细
List<Long> asnDetailIds = tasks.stream().map(TaskEntity::getAsnDetailId).collect(Collectors.toList());
Map<Long, AsnDetailEntity> asnDetailMap = asnDetailQueryService.queryAsnDetailListToMap(asnDetailIds);
//查询物料
List<Long> itemIds = asnDetailMap.values().stream().map(AsnDetailEntity::getItemId).distinct().toList();
Map<Long, ItemEntity> itemMap = itemQueryService.queryItemList(itemIds);
List<AsnDetailEntity> updateToAsnDetail = new ArrayList<>();
List<TaskEntity> deleteToTask = new ArrayList<>();
List<InventoryEntity> updateToInventory = new ArrayList<>();
List<InventoryEntity> deleteToInventory = new ArrayList<>();
for (TaskEntity task : tasks) {
//物料
ItemEntity item = itemMap.get(asnDetailMap.get(task.getAsnDetailId()).getItemId());
//入库明细
AsnDetailEntity asnDetail = asnDetailMap.get(task.getAsnDetailId());
asnDetail.setReceivedQuantity(BigDecimal.ZERO);
updateToAsnDetail.add(asnDetail);
//删除task
deleteToTask.add(task);
//库存数退回
InventoryEntity inventory = inventoryQueryService.queryInventory(task.getItemKeyId());
if (inventory != null) {
inventory.setQuantity(SmartBigDecimalUtil.subtract(inventory.getQuantity(), task.getPlanQty(), 2));
if (inventory.getQuantity().compareTo(BigDecimal.ZERO) == 0) {
deleteToInventory.add(inventory);
} else {
updateToInventory.add(inventory);
}
}
//生成库存日志
joiner.getSussMsg().add(item.getItemCode() + "退货成功");
}
//批量操作
returnUpdateOrInsert(updateToAsnDetail, deleteToTask, updateToInventory, deleteToInventory);
//刷新入库单
asnDetailService.refreshAsn(batchReturnForm.getAsnId());
return ResponseDTOUtils.buildResponseDTO(joiner);
}
/**
*
*
* @param updateToAsnDetail
* @param deleteToTask task
* @param updateToInventory
* @param deleteToInventory
*/
private void returnUpdateOrInsert(List<AsnDetailEntity> updateToAsnDetail, List<TaskEntity> deleteToTask, List<InventoryEntity> updateToInventory, List<InventoryEntity> deleteToInventory) {
//批量更新入库明细
if (CollectionUtils.isNotEmpty(updateToAsnDetail)) {
asnDetailManager.updateBatchById(updateToAsnDetail);
}
//批量删除入库记录
if (CollectionUtils.isNotEmpty(deleteToTask)) {
taskManager.removeBatchByIds(deleteToTask);
}
//批量更新库存
if (CollectionUtils.isNotEmpty(updateToInventory)) {
inventoryManager.updateBatchById(updateToInventory);
}
//批量删除库存
if (CollectionUtils.isNotEmpty(deleteToInventory)) {
inventoryManager.removeBatchByIds(deleteToInventory);
}
}
}

View File

@ -12,6 +12,7 @@ import net.lab1024.sa.admin.module.business.wms.receive.asn.service.AsnQueryServ
import net.lab1024.sa.base.common.domain.RequestUser;
import net.lab1024.sa.base.common.domain.ValidateList;
import net.lab1024.sa.base.common.util.SmartRequestUtil;
import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog;
import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum;
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
import org.springframework.web.bind.annotation.*;
@ -33,6 +34,7 @@ import jakarta.validation.Valid;
@RestController
@Tag(name = "入库单")
@OperateLog
public class AsnController {
@Resource
@ -41,9 +43,6 @@ public class AsnController {
@Resource
private AsnQueryService asnQueryService;
@Operation(summary = "分页查询 @author 霍锦")
@PostMapping("/asn/queryPage")
@SaCheckPermission("asn:query")
public ResponseDTO<PageResult<AsnVO>> queryPage(@RequestBody @Valid AsnQueryForm queryForm) {

View File

@ -0,0 +1,28 @@
package net.lab1024.sa.admin.module.business.wms.receive.asn.domain.form;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class BatchReceiveForm {
@Schema(description = "入库单", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "入库单 不能为空")
private Long asnId;
@Schema(description = "入库明细", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "入库明细 不能为空")
private List<Long> asnDetailIds;
@Schema(description = "容器", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "容器 不能为空")
private String stockCode;
@Schema(description = "库位", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "库位 不能为空")
private String locationCode;
}

View File

@ -0,0 +1,18 @@
package net.lab1024.sa.admin.module.business.wms.receive.asn.domain.form;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class BatchReturnForm {
@Schema(description = "入库单", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "入库单 不能为空")
private Long asnId;
@Schema(description = "收货明细", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "收货明细 不能为空")
private List<Long> taskIds;
}

View File

@ -30,6 +30,8 @@ import net.lab1024.sa.base.common.util.SmartPageUtil;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.domain.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum;
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
import org.apache.commons.collections4.CollectionUtils;
@ -67,6 +69,9 @@ public class AsnService {
@Resource
private SerialNumberService serialNumberService;
@Resource
private DataTracerService dataTracerService;
/**
*
*

View File

@ -22,6 +22,7 @@ import net.lab1024.sa.base.common.util.SmartPageUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -101,8 +102,22 @@ public class AsnDetailQueryService {
if (CollectionUtils.isEmpty(idList)) {
return null;
}
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(AsnDetailEntity::getAsnDetailId, idList);
return asnDetailDao.selectList(queryWrapper);
return asnDetailDao.selectBatchIds(idList);
}
/**
*
*
* @param idList
* @return Map<String, AsnDetailEntity>
*/
public Map<Long, AsnDetailEntity> queryAsnDetailListToMap(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)) {
return Collections.emptyMap();
}
List<AsnDetailEntity> asnDetails = queryAsnDetailList(idList);
return asnDetails.stream()
.collect(Collectors.toMap(AsnDetailEntity::getAsnDetailId, asnDetail -> asnDetail, (existing, replacement) -> existing));
}
}

View File

@ -38,6 +38,12 @@ public class TaskVO {
@Schema(description = "物料序号")
private Long itemKeyId;
@Schema(description = "物料编码")
private String itemCode;
@Schema(description = "物料名称")
private String itemName;
@Schema(description = "收货明细序号")
private Long asnDetailId;
@ -53,21 +59,21 @@ public class TaskVO {
@Schema(description = "目标容器")
private Long dstStockId;
@Schema(description = "目标容器编码")
private String dstStockCode;
@Schema(description = "原点位")
private Long srcLocationId;
@Schema(description = "原库位编码")
private String srcLocationCode;
@Schema(description = "目标点位")
private Long dstLocationId;
@Schema(description = "目标库位编码")
private String dstLocationCode;
@Schema(description = "原库位编码")
private String srcLocationCode;
@Schema(description = "目标容器编码")
private String dstStockCode;
@Schema(description = "库存ID")
private Long inventoryId;
@ -80,16 +86,4 @@ public class TaskVO {
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "完成时间")
private LocalDateTime endTime;
@Schema(description = "创建人ID")
private Long createUserId;
@Schema(description = "创建人")
private String createUserName;
@Schema(description = "更新时间")
private LocalDateTime updateTime;
}

View File

@ -2,7 +2,16 @@ package net.lab1024.sa.admin.module.business.wms.task.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import net.lab1024.sa.admin.module.business.wms.base.area.domain.entity.AreaEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.service.ItemQueryService;
import net.lab1024.sa.admin.module.business.wms.base.location.domain.entity.LocationEntity;
import net.lab1024.sa.admin.module.business.wms.base.stock.domain.vo.StockVO;
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
import net.lab1024.sa.admin.module.business.wms.itemKey.manager.ItemKeyManager;
import net.lab1024.sa.admin.module.business.wms.itemKey.service.ItemKeyQueryService;
import net.lab1024.sa.admin.module.business.wms.task.dao.TaskDao;
import net.lab1024.sa.admin.module.business.wms.task.domain.entity.TaskEntity;
import net.lab1024.sa.admin.module.business.wms.task.domain.form.TaskQueryForm;
import net.lab1024.sa.admin.module.business.wms.task.domain.vo.TaskVO;
import net.lab1024.sa.base.common.domain.PageResult;
@ -10,6 +19,8 @@ import net.lab1024.sa.base.common.util.SmartPageUtil;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class TaskQueryService {
@ -17,14 +28,49 @@ public class TaskQueryService {
@Resource
private TaskDao taskDao;
@Resource
private ItemQueryService itemQueryService;
@Resource
private ItemKeyQueryService itemKeyQueryService;
/**
*
*/
public PageResult<TaskVO> queryPage(TaskQueryForm queryForm) {
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
List<TaskVO> list = taskDao.queryPage(page, queryForm);
// 查询物料属性
List<Long> itemKeyIds = list.stream().map(TaskVO::getItemKeyId).distinct().collect(Collectors.toList());
Map<Long, ItemKeyEntity> itemKeyMap = itemKeyQueryService.queryItemKeyList(itemKeyIds);
//查询物料
List<Long> itemIds = itemKeyMap.values().stream().map(ItemKeyEntity::getItemId).distinct().toList();
Map<Long, ItemEntity> itemMap = itemQueryService.queryItemList(itemIds);
list.forEach(TaskVO -> {
ItemKeyEntity itemKey = itemKeyMap.get(TaskVO.getItemKeyId());
if (itemKey != null) {
ItemEntity item = itemMap.get(itemKey.getItemId());
if (item != null) {
TaskVO.setItemCode(item.getItemCode());
TaskVO.setItemName(item.getItemName());
}
}
});
return SmartPageUtil.convert2PageResult(page, list);
}
/**
* ID
* @param taskIds ID
* @return List<TaskEntity>
*/
public List<TaskEntity> queryByTaskIds(List<Long> taskIds) {
return taskDao.selectBatchIds(taskIds);
}
}

View File

@ -4,7 +4,10 @@
<!-- 查询结果列 -->
<sql id="base_columns">
t_task.task_id,
t_task
.
task_id
,
t_task.bill_code,
t_task.status,
t_task.task_type,
@ -39,7 +42,7 @@
<where>
<!--入库单-->
<if test="queryForm.asnId != null ">
AND t_task.asn_detail_id=#{queryForm.asnId}
AND t_task.asn_detail_id in (select asn_detail_id from t_asn_detail where asn_id = #{queryForm.asnId})
</if>
</where>
</select>

View File

@ -35,6 +35,8 @@ public enum DataTracerTypeEnum implements BaseEnum {
;
private final Integer value;
private final String desc;