批量退货
parent
914d45a479
commit
104d17606a
|
|
@ -66,4 +66,8 @@ public class AdminCacheConst extends CacheKeyConst {
|
||||||
public static final String CUSTOMER_ENTITY = "customer_cache";
|
public static final String CUSTOMER_ENTITY = "customer_cache";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class itemKey {
|
||||||
|
public static final String ITEM_KEY_ENTITY = "item_key_cache";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
package net.lab1024.sa.admin.module.business.wms.itemKey.manager;
|
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.domain.entity.ItemKeyEntity;
|
||||||
import net.lab1024.sa.admin.module.business.wms.itemKey.dao.ItemKeyDao;
|
import net.lab1024.sa.admin.module.business.wms.itemKey.dao.ItemKeyDao;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.dao.ItemKeyDao;
|
||||||
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
|
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;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -16,7 +23,22 @@ import org.springframework.stereotype.Service;
|
||||||
* @Copyright 友仓
|
* @Copyright 友仓
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class ItemKeyManager extends ServiceImpl<ItemKeyDao, ItemKeyEntity> {
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import jakarta.annotation.Resource;
|
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.dao.ItemKeyDao;
|
||||||
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
|
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.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.entity.ItemKeyEntity;
|
||||||
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.form.ItemKeyQueryForm;
|
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.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.domain.PageResult;
|
||||||
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ItemKeyQueryService {
|
public class ItemKeyQueryService {
|
||||||
|
|
@ -24,6 +30,9 @@ public class ItemKeyQueryService {
|
||||||
@Resource
|
@Resource
|
||||||
private ItemKeyDao itemKeyDao;
|
private ItemKeyDao itemKeyDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ItemKeyManager itemKeyManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询
|
* 分页查询
|
||||||
*/
|
*/
|
||||||
|
|
@ -33,6 +42,27 @@ public class ItemKeyQueryService {
|
||||||
return SmartPageUtil.convert2PageResult(page, list);
|
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) {
|
public ItemKeyEntity queryItemKey(String orderNumber, Long itemId, String propC1) {
|
||||||
LambdaQueryWrapper<ItemKeyEntity> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ItemKeyEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(ItemKeyEntity::getOrderNumber, orderNumber);
|
queryWrapper.eq(ItemKeyEntity::getOrderNumber, orderNumber);
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,18 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
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.ResponseDTO;
|
||||||
import net.lab1024.sa.base.common.domain.ValidateList;
|
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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@Tag(name = "收货")
|
@Tag(name = "收货")
|
||||||
|
@OperateLog
|
||||||
public class ReceiveController {
|
public class ReceiveController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|
@ -20,7 +24,14 @@ public class ReceiveController {
|
||||||
@Operation(summary = "批量收货 @author 霍锦")
|
@Operation(summary = "批量收货 @author 霍锦")
|
||||||
@PostMapping("/receive/batchReceive")
|
@PostMapping("/receive/batchReceive")
|
||||||
@SaCheckPermission("receive:batchReceive")
|
@SaCheckPermission("receive:batchReceive")
|
||||||
public ResponseDTO<String> batchReceive(@RequestBody ValidateList<Long> idList) {
|
public ResponseDTO<String> batchReceive(@RequestBody BatchReceiveForm batchReceiveForm) {
|
||||||
return receiveService.batchReceive(idList);
|
return receiveService.batchReceive(batchReceiveForm);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "批量退货 @author 霍锦")
|
||||||
|
@PostMapping("/receive/batchReturn")
|
||||||
|
@SaCheckPermission("receive:batchReturn")
|
||||||
|
public ResponseDTO<String> batchReturn(@RequestBody BatchReturnForm batchReturnForm) {
|
||||||
|
return receiveService.batchReturn(batchReturnForm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.manager.ItemKeyManager;
|
||||||
import net.lab1024.sa.admin.module.business.wms.itemKey.service.ItemKeyQueryService;
|
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.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.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.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.entity.AsnDetailEntity;
|
||||||
import net.lab1024.sa.admin.module.business.wms.receive.asnDetail.domain.vo.AsnDetailVO;
|
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.constant.TaskTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.business.wms.task.domain.entity.TaskEntity;
|
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.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.task.service.TaskService;
|
||||||
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
|
import net.lab1024.sa.admin.module.business.wms.itemKey.domain.entity.ItemKeyEntity;
|
||||||
import net.lab1024.sa.admin.module.business.wms.receive.asn.service.AsnQueryService;
|
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.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ReceiveService {
|
public class ReceiveService {
|
||||||
|
@Resource
|
||||||
|
private AsnDao asnDao;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AsnDetailManager asnDetailManager;
|
private AsnDetailManager asnDetailManager;
|
||||||
|
|
@ -69,10 +76,10 @@ public class ReceiveService {
|
||||||
private ItemQueryService itemQueryService;
|
private ItemQueryService itemQueryService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AsnQueryService asnQueryService;
|
private AsnDetailQueryService asnDetailQueryService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AsnDetailQueryService asnDetailQueryService;
|
private TaskQueryService taskQueryService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private InventoryQueryService inventoryQueryService;
|
private InventoryQueryService inventoryQueryService;
|
||||||
|
|
@ -96,25 +103,15 @@ public class ReceiveService {
|
||||||
/**
|
/**
|
||||||
* 批量收货
|
* 批量收货
|
||||||
*
|
*
|
||||||
* @param idList 入库明细id集合
|
* @param batchReceiveForm 批量收货参数
|
||||||
* @return ResponseDTO<String>
|
* @return ResponseDTO<String>
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> batchReceive(List<Long> idList) {
|
public ResponseDTO<String> batchReceive(BatchReceiveForm batchReceiveForm) {
|
||||||
if (CollectionUtils.isEmpty(idList)) {
|
List<AsnDetailEntity> asnDetails = asnDetailQueryService.queryAsnDetailList(batchReceiveForm.getAsnDetailIds());
|
||||||
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
|
|
||||||
}
|
|
||||||
List<AsnDetailEntity> asnDetails = asnDetailQueryService.queryAsnDetailList(idList);
|
|
||||||
if (CollectionUtils.isEmpty(asnDetails)) {
|
if (CollectionUtils.isEmpty(asnDetails)) {
|
||||||
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
|
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();
|
JoinerResult joiner = JoinerResult.createJoiner();
|
||||||
|
|
||||||
|
|
@ -122,28 +119,24 @@ public class ReceiveService {
|
||||||
List<Long> itemIds = asnDetails.stream().map(AsnDetailEntity::getItemId).distinct().toList();
|
List<Long> itemIds = asnDetails.stream().map(AsnDetailEntity::getItemId).distinct().toList();
|
||||||
Map<Long, ItemEntity> itemMap = itemQueryService.queryItemList(itemIds);
|
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<AsnDetailEntity> updateToAsnDetail = new ArrayList<>();
|
||||||
List<TaskEntity> insertToTask = new ArrayList<>();
|
List<TaskEntity> insertToTask = new ArrayList<>();
|
||||||
List<InventoryEntity> insertToInventory = new ArrayList<>();
|
List<InventoryEntity> insertToInventory = new ArrayList<>();
|
||||||
List<InventoryEntity> updateToInventory = 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) {
|
for (AsnDetailEntity asnDetail : asnDetails) {
|
||||||
//物料
|
//物料
|
||||||
ItemEntity item = itemMap.get(asnDetail.getItemId());
|
ItemEntity item = itemMap.get(asnDetail.getItemId());
|
||||||
|
|
||||||
//入库单
|
|
||||||
AsnEntity asn = asnMap.get(asnDetail.getAsnId());
|
|
||||||
|
|
||||||
if (SmartBigDecimalUtil.subtract(asnDetail.getOrderQuantity(), asnDetail.getReceivedQuantity(), 2).compareTo(BigDecimal.ZERO) == 0) {
|
if (SmartBigDecimalUtil.subtract(asnDetail.getOrderQuantity(), asnDetail.getReceivedQuantity(), 2).compareTo(BigDecimal.ZERO) == 0) {
|
||||||
joiner.getErrorMsg().add(item.getItemCode() + "明细已收货");
|
joiner.getErrorMsg().add(item.getItemCode() + "明细已收货");
|
||||||
continue;
|
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);
|
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);
|
insertToTask.add(task);
|
||||||
|
|
||||||
//生成库存
|
//生成库存记录
|
||||||
InventoryEntity inventory = inventoryQueryService.queryInventory(itemKey.getItemKeyId());
|
InventoryEntity inventory = inventoryQueryService.queryInventory(itemKey.getItemKeyId());
|
||||||
if (inventory == null) {
|
if (inventory == null) {
|
||||||
inventory = inventoryService.createInventory(itemKey.getItemKeyId(), dstLocation == null ? null : dstLocation.getLocationId(), dstStock == null ? null : dstStock.getStockId(), asnDetail.getOrderQuantity());
|
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);
|
updateToInventory.add(inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//生成库存日志
|
||||||
|
|
||||||
joiner.getSussMsg().add(item.getItemCode() + "收货成功");
|
joiner.getSussMsg().add(item.getItemCode() + "收货成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -183,7 +184,7 @@ public class ReceiveService {
|
||||||
batchUpdateOrInsert(updateToAsnDetail, insertToTask, insertToInventory, updateToInventory);
|
batchUpdateOrInsert(updateToAsnDetail, insertToTask, insertToInventory, updateToInventory);
|
||||||
|
|
||||||
//刷新入库单
|
//刷新入库单
|
||||||
asnIds.forEach(asnDetailService::refreshAsn);
|
asnDetailService.refreshAsn(batchReceiveForm.getAsnId());
|
||||||
|
|
||||||
return ResponseDTOUtils.buildResponseDTO(joiner);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.RequestUser;
|
||||||
import net.lab1024.sa.base.common.domain.ValidateList;
|
import net.lab1024.sa.base.common.domain.ValidateList;
|
||||||
import net.lab1024.sa.base.common.util.SmartRequestUtil;
|
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.constant.SerialNumberIdEnum;
|
||||||
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
|
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
@ -33,6 +34,7 @@ import jakarta.validation.Valid;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@Tag(name = "入库单")
|
@Tag(name = "入库单")
|
||||||
|
@OperateLog
|
||||||
public class AsnController {
|
public class AsnController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|
@ -41,9 +43,6 @@ public class AsnController {
|
||||||
@Resource
|
@Resource
|
||||||
private AsnQueryService asnQueryService;
|
private AsnQueryService asnQueryService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Operation(summary = "分页查询 @author 霍锦")
|
|
||||||
@PostMapping("/asn/queryPage")
|
@PostMapping("/asn/queryPage")
|
||||||
@SaCheckPermission("asn:query")
|
@SaCheckPermission("asn:query")
|
||||||
public ResponseDTO<PageResult<AsnVO>> queryPage(@RequestBody @Valid AsnQueryForm queryForm) {
|
public ResponseDTO<PageResult<AsnVO>> queryPage(@RequestBody @Valid AsnQueryForm queryForm) {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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.ResponseDTO;
|
||||||
import net.lab1024.sa.base.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.constant.SerialNumberIdEnum;
|
||||||
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
|
import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
@ -67,6 +69,9 @@ public class AsnService {
|
||||||
@Resource
|
@Resource
|
||||||
private SerialNumberService serialNumberService;
|
private SerialNumberService serialNumberService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加
|
* 添加
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -101,8 +102,22 @@ public class AsnDetailQueryService {
|
||||||
if (CollectionUtils.isEmpty(idList)) {
|
if (CollectionUtils.isEmpty(idList)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
|
return asnDetailDao.selectBatchIds(idList);
|
||||||
queryWrapper.in(AsnDetailEntity::getAsnDetailId, idList);
|
}
|
||||||
return asnDetailDao.selectList(queryWrapper);
|
|
||||||
|
/**
|
||||||
|
* 根据明细集合查询明细信息
|
||||||
|
*
|
||||||
|
* @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));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,12 @@ public class TaskVO {
|
||||||
@Schema(description = "物料序号")
|
@Schema(description = "物料序号")
|
||||||
private Long itemKeyId;
|
private Long itemKeyId;
|
||||||
|
|
||||||
|
@Schema(description = "物料编码")
|
||||||
|
private String itemCode;
|
||||||
|
|
||||||
|
@Schema(description = "物料名称")
|
||||||
|
private String itemName;
|
||||||
|
|
||||||
@Schema(description = "收货明细序号")
|
@Schema(description = "收货明细序号")
|
||||||
private Long asnDetailId;
|
private Long asnDetailId;
|
||||||
|
|
||||||
|
|
@ -53,21 +59,21 @@ public class TaskVO {
|
||||||
@Schema(description = "目标容器")
|
@Schema(description = "目标容器")
|
||||||
private Long dstStockId;
|
private Long dstStockId;
|
||||||
|
|
||||||
|
@Schema(description = "目标容器编码")
|
||||||
|
private String dstStockCode;
|
||||||
|
|
||||||
@Schema(description = "原点位")
|
@Schema(description = "原点位")
|
||||||
private Long srcLocationId;
|
private Long srcLocationId;
|
||||||
|
|
||||||
|
@Schema(description = "原库位编码")
|
||||||
|
private String srcLocationCode;
|
||||||
|
|
||||||
@Schema(description = "目标点位")
|
@Schema(description = "目标点位")
|
||||||
private Long dstLocationId;
|
private Long dstLocationId;
|
||||||
|
|
||||||
@Schema(description = "目标库位编码")
|
@Schema(description = "目标库位编码")
|
||||||
private String dstLocationCode;
|
private String dstLocationCode;
|
||||||
|
|
||||||
@Schema(description = "原库位编码")
|
|
||||||
private String srcLocationCode;
|
|
||||||
|
|
||||||
@Schema(description = "目标容器编码")
|
|
||||||
private String dstStockCode;
|
|
||||||
|
|
||||||
@Schema(description = "库存ID")
|
@Schema(description = "库存ID")
|
||||||
private Long inventoryId;
|
private Long inventoryId;
|
||||||
|
|
||||||
|
|
@ -80,16 +86,4 @@ public class TaskVO {
|
||||||
@Schema(description = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@Schema(description = "完成时间")
|
|
||||||
private LocalDateTime endTime;
|
|
||||||
|
|
||||||
@Schema(description = "创建人ID")
|
|
||||||
private Long createUserId;
|
|
||||||
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createUserName;
|
|
||||||
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private LocalDateTime updateTime;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,16 @@ package net.lab1024.sa.admin.module.business.wms.task.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import jakarta.annotation.Resource;
|
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.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.form.TaskQueryForm;
|
||||||
import net.lab1024.sa.admin.module.business.wms.task.domain.vo.TaskVO;
|
import net.lab1024.sa.admin.module.business.wms.task.domain.vo.TaskVO;
|
||||||
import net.lab1024.sa.base.common.domain.PageResult;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class TaskQueryService {
|
public class TaskQueryService {
|
||||||
|
|
@ -17,14 +28,49 @@ public class TaskQueryService {
|
||||||
@Resource
|
@Resource
|
||||||
private TaskDao taskDao;
|
private TaskDao taskDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ItemQueryService itemQueryService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ItemKeyQueryService itemKeyQueryService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询
|
* 分页查询
|
||||||
*/
|
*/
|
||||||
public PageResult<TaskVO> queryPage(TaskQueryForm queryForm) {
|
public PageResult<TaskVO> queryPage(TaskQueryForm queryForm) {
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||||
List<TaskVO> list = taskDao.queryPage(page, 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);
|
return SmartPageUtil.convert2PageResult(page, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据任务ID集合查询
|
||||||
|
* @param taskIds 任务ID集合
|
||||||
|
* @return List<TaskEntity>
|
||||||
|
*/
|
||||||
|
public List<TaskEntity> queryByTaskIds(List<Long> taskIds) {
|
||||||
|
return taskDao.selectBatchIds(taskIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,10 @@
|
||||||
|
|
||||||
<!-- 查询结果列 -->
|
<!-- 查询结果列 -->
|
||||||
<sql id="base_columns">
|
<sql id="base_columns">
|
||||||
t_task.task_id,
|
t_task
|
||||||
|
.
|
||||||
|
task_id
|
||||||
|
,
|
||||||
t_task.bill_code,
|
t_task.bill_code,
|
||||||
t_task.status,
|
t_task.status,
|
||||||
t_task.task_type,
|
t_task.task_type,
|
||||||
|
|
@ -39,7 +42,7 @@
|
||||||
<where>
|
<where>
|
||||||
<!--入库单-->
|
<!--入库单-->
|
||||||
<if test="queryForm.asnId != null ">
|
<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>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,8 @@ public enum DataTracerTypeEnum implements BaseEnum {
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final Integer value;
|
private final Integer value;
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue