Compare commits
15 Commits
55bdb3c95a
...
93e1885898
| Author | SHA1 | Date |
|---|---|---|
|
|
93e1885898 | |
|
|
3e987656d4 | |
|
|
f41ecedea5 | |
|
|
2aa1c723c3 | |
|
|
f5fc5c2368 | |
|
|
cb53b606bb | |
|
|
56e5db2c3b | |
|
|
9ee983b81c | |
|
|
018ecd60a2 | |
|
|
b6d28d7f30 | |
|
|
21fb7417f6 | |
|
|
8c9ebde6d3 | |
|
|
3c1d0ba75f | |
|
|
1506c4119e | |
|
|
a13539d6b0 |
|
|
@ -220,6 +220,7 @@ public class InventoryController extends BaseController {
|
|||
.itemId(item.getId())
|
||||
.uniqNo(qrCodeContent.getUniqNo())
|
||||
.materialNo(qrCodeContent.getMaterialNo())
|
||||
.materialDesc(qrCodeContent.getMaterialDesc())
|
||||
.materialId(material.getId())
|
||||
.batchNo(qrCodeContent.getBatchNo())
|
||||
.serialNo(qrCodeContent.getSerialNo())
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.nflg.wms.admin.controller;
|
||||
|
||||
/* * 普通物料收货单*/
|
||||
/**
|
||||
* 普通物料收货单
|
||||
*/
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
|
|
@ -40,6 +42,10 @@ import java.util.List;
|
|||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 普通物料收货单
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/pgi/normal")
|
||||
public class NormalPGIController extends BaseController {
|
||||
|
|
@ -71,12 +77,23 @@ public class NormalPGIController extends BaseController {
|
|||
private IWmsPoReceiptItemService wmsPoReceiptItemService;
|
||||
|
||||
//收货单分页
|
||||
|
||||
/**
|
||||
* 送货单列表
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("search")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "送货单列表")
|
||||
public ApiResult<PageData<SrmOrderVO>> search(@Valid @RequestBody SRMOrderSearchQO request) {
|
||||
return ApiResult.success(wmsSrmOrderService.search(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 送货单详情
|
||||
* @param orderId 订单ID
|
||||
* @return
|
||||
*/
|
||||
//收货单详情
|
||||
@GetMapping("getOrderItem")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "获取送货单详情")
|
||||
|
|
@ -88,16 +105,11 @@ public class NormalPGIController extends BaseController {
|
|||
return ApiResult.success(srmOrderItemVOS);
|
||||
}
|
||||
|
||||
|
||||
//PDA 扫码获取收货信息
|
||||
@GetMapping("getOrderItemByOrderNo")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情")
|
||||
public ApiResult<PDAOrderVO> getOrderItemByOrderNo(@RequestParam String orderNo) {
|
||||
PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo);
|
||||
return ApiResult.success(pdaOrderVO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取扫码的详情信息
|
||||
* @param orderItemId 订单项ID
|
||||
* @return
|
||||
*/
|
||||
// 查看扫码记录
|
||||
@GetMapping("getScanCodes")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息")
|
||||
|
|
@ -107,6 +119,247 @@ public class NormalPGIController extends BaseController {
|
|||
return ApiResult.success(pdas);
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫描送货单号获取送货单详情(PDA)
|
||||
* @param orderNo 送货单号
|
||||
* @return
|
||||
*/
|
||||
//PDA 扫码获取收货信息
|
||||
@GetMapping("PDA/getOrderItemByOrderNo")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情")
|
||||
public ApiResult<PDAOrderVO> getOrderItemByOrderNo(@RequestParam String orderNo) {
|
||||
PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo);
|
||||
return ApiResult.success(pdaOrderVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 收货确认(PDA使用)
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
//收货确认
|
||||
@PostMapping("PDA/takeDelivery")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "收货确认")
|
||||
public ApiResult<Void> takeDelivery(@Valid @RequestBody List<SrmMaterialReceiptQO> request) {
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空");
|
||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.get(0).getNoteNum()).one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
|
||||
List<SAPSyncParamsDTO> sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order);
|
||||
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setOrderNo(order.getNoteNum())
|
||||
.setCreateUserName(UserUtil.getUserName())
|
||||
.setCreateUserId(UserUtil.getUserId())
|
||||
.setFactoryCode(order.getIuCode())
|
||||
.setIsCompleted(false);
|
||||
|
||||
WmsQcReceive wmsQcReceive = new WmsQcReceive()
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setIsCompleted((short) 0)
|
||||
.setOrderNo(order.getNoteNum())
|
||||
.setCreateUserName(UserUtil.getUserName())
|
||||
.setFactoryCode(order.getIuCode())
|
||||
.setCreateUserId(UserUtil.getUserId());
|
||||
|
||||
List<WmsPoReceiptItem> wmsPoReceiptItems = new ArrayList<>();
|
||||
|
||||
List<WmsQcReceiveItem> wmsQcReceiveItems = new ArrayList<>();
|
||||
|
||||
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
||||
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
||||
|
||||
|
||||
for (SrmMaterialReceiptQO item : request) {
|
||||
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
||||
continue;
|
||||
|
||||
SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream()
|
||||
.filter(sapSyncParamsDTO ->
|
||||
sapSyncParamsDTO.getEbeln().equals(item.getPoNum())
|
||||
&& sapSyncParamsDTO.getEbelp().equals(item.getPoLineNumber()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
//数量验证(判断收货数量是否大于了未收数量)
|
||||
VUtil.trueThrowBusinessError(item.getReceiptNum().compareTo(materialInfoInOrder.getTransportNum()) > 0).throwMessage("物料收货数量[" + item.getReceiptNum() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum());
|
||||
//序列号和批次号验证
|
||||
List<SrmMaterialReceiptScanCodes> codes = normalPGIControllerService.validateScanCodes(item, materialInfoInOrder);
|
||||
if (CollectionUtil.isNotEmpty(codes)) {
|
||||
srmMaterialReceiptScanCodes.addAll(codes);
|
||||
}
|
||||
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
|
||||
// 如果是质检单
|
||||
if (isQuality) {
|
||||
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId());
|
||||
} else {
|
||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
|
||||
}
|
||||
}
|
||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通物料的上架任务(PDA)
|
||||
* @param orederNo 送货单号或是任务单号
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("PDA/task")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "普通物料上架任务")
|
||||
public ApiResult<List<PoReceiveTaskVO>> takeDelivery(@Valid @RequestParam String orederNo) {
|
||||
List<WmsPoReceipt> wmsPoReceipts = wmsPoReceiptItemService.getTask(orederNo);
|
||||
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||
return ApiResult.success(Convert.toList(PoReceiveTaskVO.class, wmsPoReceipts));
|
||||
}
|
||||
return ApiResult.success(new ArrayList<>());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 上架任务详情(PDA)
|
||||
* * @param id 任务ID
|
||||
* */
|
||||
@GetMapping("PDA/task/item")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
|
||||
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestParam Long taskId) {
|
||||
List<WmsPoReceiptItem> wmsPoReceipts = wmsPoReceiptItemService.lambdaQuery()
|
||||
.eq(WmsPoReceiptItem::getReceiveId, taskId)
|
||||
.list();
|
||||
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||
return ApiResult.success(Convert.toList(PoReceiveTaskItemVO.class, wmsPoReceipts));
|
||||
} else {
|
||||
return ApiResult.success(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 采购物料入库确认(PDA)
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("PDA/task/confirm")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "普通物料任务上架确认")
|
||||
public ApiResult<Void> takeDeliveryConfirm(@Valid @RequestBody PoReceiveTaskConfirmQO request) {
|
||||
|
||||
//首先判断是否已经确认
|
||||
WmsPoReceipt wmsPoReceipt = wmsPoReceiptService.getById(request.getTaskId());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
||||
VUtil.trueThrowBusinessError(Objects.equals(wmsPoReceipt.getIsCompleted(), true)).throwMessage("此任务已入库");
|
||||
List<Long> uniqueIds = request.getItems().stream()
|
||||
.map(PoReceiveTaskItemConfirmQO::getId) // 提取每个对象的 ID
|
||||
.distinct() // 去重
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<WmsPoReceiptItem> wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery()
|
||||
.in(WmsPoReceiptItem::getId, uniqueIds)
|
||||
.list();
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(wmsPoReceiptItems)).throwMessage("获取入库详情失败");
|
||||
List<WmsPoReceiptItem> receiptItems = new ArrayList<>();
|
||||
List<StorageLocationDTO> storageLocationDTOS = new ArrayList<>();
|
||||
List<InventoryDTO> inventories = new ArrayList<>();
|
||||
List<ZWM3A17DTO> zwm3A17DTOS = new ArrayList<>();
|
||||
|
||||
for (WmsPoReceiptItem item : wmsPoReceiptItems) {
|
||||
PoReceiveTaskItemConfirmQO qo = request.getItems().stream()
|
||||
.filter(q -> q.getId().equals(item.getId()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(qo))
|
||||
continue;
|
||||
item.setCrossQty(qo.getCrossQty());
|
||||
item.setReceivedWarehouse(qo.getReceivedWarehouse());
|
||||
item.setInQty(item.getReceiptNum());
|
||||
item.setUpdateTime(LocalDateTime.now());
|
||||
item.setUpdateUserId(UserUtil.getUserId());
|
||||
item.setUpdateUserName(UserUtil.getUserName());
|
||||
receiptItems.add(item);
|
||||
//储位处理
|
||||
if (!qo.getStorageLocation().equals(qo.getStorageLocationNew())) {
|
||||
List<String> bins = Arrays.asList(item.getStorageLocation().split("/"));
|
||||
storageLocationDTOS.add(new StorageLocationDTO()
|
||||
.setBinNos(bins)
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setFactory(wmsPoReceipt.getFactoryCode())
|
||||
);
|
||||
}
|
||||
|
||||
// SAP 和条码处理
|
||||
//传入SAP的信息
|
||||
ZWM3A17DTO zwm3A17DTO = zwm3A17DTOS.stream()
|
||||
.filter(zwm3A17DTO1 -> zwm3A17DTO1.getEbeln().equals(item.getPoNum()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(zwm3A17DTO)) {
|
||||
zwm3A17DTO = new ZWM3A17DTO()
|
||||
.setEbeln(item.getPoNum())
|
||||
.setUsnam(UserUtil.getUserName())
|
||||
.setItem1(new ArrayList<>())
|
||||
.setItem2(new ArrayList<>());
|
||||
zwm3A17DTOS.add(zwm3A17DTO);
|
||||
}
|
||||
|
||||
List<ZWM3A17Item1DTO> item1 = zwm3A17DTO.getItem1();
|
||||
List<ZWM3A17Item2DTO> item2 = zwm3A17DTO.getItem2();
|
||||
|
||||
List<SrmMaterialReceiptScanCodes> scanCode = srmMaterialReceiptScanCodesRepository.findByOrderItemId(item.getOrderItemId().toString());
|
||||
if (CollectionUtil.isEmpty(scanCode)) {
|
||||
scanCode.forEach(code -> {
|
||||
// 库存
|
||||
InventoryDTO inventoryDTO = new InventoryDTO()
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBatchNumber(code.getBatchNumber())
|
||||
.setNum(code.getCodeNum());
|
||||
inventories.add(inventoryDTO);
|
||||
|
||||
item1.add(new ZWM3A17Item1DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setMATNR(item.getItemCode())
|
||||
.setERFMG(code.getCodeNum())
|
||||
.setMEINS(item.getUomCode())
|
||||
.setCHARG(code.getBatchNumber())
|
||||
.setWERKS(wmsPoReceipt.getFactoryCode())
|
||||
.setLGORT(item.getReceivedWarehouse())
|
||||
.setKZKRI("")
|
||||
);
|
||||
|
||||
item2.add(new ZWM3A17Item2DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setFLAG("")
|
||||
.setFLAG(code.getSerialNumbers()));
|
||||
});
|
||||
} else {
|
||||
// 库存
|
||||
InventoryDTO inventoryDTO = new InventoryDTO()
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBatchNumber("")
|
||||
.setNum(item.getInQty());
|
||||
inventories.add(inventoryDTO);
|
||||
|
||||
item1.add(new ZWM3A17Item1DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setMATNR(item.getItemCode())
|
||||
.setERFMG(item.getInQty())
|
||||
.setMEINS(item.getUomCode())
|
||||
.setCHARG("")
|
||||
.setWERKS(wmsPoReceipt.getFactoryCode())
|
||||
.setLGORT(item.getReceivedWarehouse())
|
||||
.setKZKRI("")
|
||||
);
|
||||
}
|
||||
}
|
||||
normalPGIControllerService.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
||||
private List<SAPSyncParamsDTO> getSapSyncParamsDTOS(List<SrmMaterialReceiptQO> request, WmsSrmOrder order) {
|
||||
List<Triple<String, String, String>> uniqueCombinations = request.stream()
|
||||
.map(item -> Triple.of(item.getPoNum(), order.getSupplierNum(), item.getItemCode()))
|
||||
|
|
@ -273,7 +526,7 @@ public class NormalPGIController extends BaseController {
|
|||
content.setLineVOList(new ArrayList<>());
|
||||
dto.setContent(content);
|
||||
dto.setCode("SCAN_RCV_RECEIVE_TO_SRM");
|
||||
qcDto.setPushDto(srmPushDto);
|
||||
qcDto.setPushDto(dto);
|
||||
}
|
||||
srmPushDto = qcDto.getPushDto();
|
||||
|
||||
|
|
@ -310,216 +563,6 @@ public class NormalPGIController extends BaseController {
|
|||
qcDto.getReceiptIds().add(qmsReceiptItem.getId());
|
||||
}
|
||||
|
||||
|
||||
//收货确认
|
||||
@PostMapping("takeDelivery")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "收货确认")
|
||||
public ApiResult<Void> takeDelivery(@Valid @RequestBody List<SrmMaterialReceiptQO> request) {
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空");
|
||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getId, request.get(0).getNoteNum()).one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
|
||||
List<SAPSyncParamsDTO> sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order);
|
||||
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setOrderNo(order.getNoteNum())
|
||||
.setCreateUserName(UserUtil.getUserName())
|
||||
.setCreateUserId(UserUtil.getUserId())
|
||||
.setFactoryCode(order.getIuCode())
|
||||
.setIsCompleted(false);
|
||||
|
||||
WmsQcReceive wmsQcReceive = new WmsQcReceive()
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setIsCompleted((short) 0)
|
||||
.setOrderNo(order.getNoteNum())
|
||||
.setCreateUserName(UserUtil.getUserName())
|
||||
.setFactoryCode(order.getIuCode())
|
||||
.setCreateUserId(UserUtil.getUserId());
|
||||
|
||||
List<WmsPoReceiptItem> wmsPoReceiptItems = new ArrayList<>();
|
||||
|
||||
List<WmsQcReceiveItem> wmsQcReceiveItems = new ArrayList<>();
|
||||
|
||||
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
||||
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
||||
|
||||
|
||||
for (SrmMaterialReceiptQO item : request) {
|
||||
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
||||
continue;
|
||||
|
||||
SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream()
|
||||
.filter(sapSyncParamsDTO ->
|
||||
sapSyncParamsDTO.getEbeln().equals(item.getPoNum())
|
||||
&& sapSyncParamsDTO.getEbelp().equals(item.getPoLineNumber()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
//数量验证(判断收货数量是否大于了未收数量)
|
||||
VUtil.trueThrowBusinessError(item.getReceiptNum().compareTo(materialInfoInOrder.getTransportNum()) > 0).throwMessage("物料收货数量[" + item.getReceiptNum() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum());
|
||||
//序列号和批次号验证
|
||||
List<SrmMaterialReceiptScanCodes> codes = normalPGIControllerService.validateScanCodes(item, materialInfoInOrder);
|
||||
if (CollectionUtil.isNotEmpty(codes)) {
|
||||
srmMaterialReceiptScanCodes.addAll(codes);
|
||||
}
|
||||
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
|
||||
// 如果是质检单
|
||||
if (isQuality) {
|
||||
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId());
|
||||
} else {
|
||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
|
||||
}
|
||||
}
|
||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("task")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "普通物料上架任务")
|
||||
public ApiResult<List<PoReceiveTaskVO>> takeDelivery(@Valid @RequestBody String orederNo) {
|
||||
List<WmsPoReceipt> wmsPoReceipts = wmsPoReceiptItemService.getTask(orederNo);
|
||||
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||
return ApiResult.success(Convert.toList(PoReceiveTaskVO.class, wmsPoReceipts));
|
||||
}
|
||||
return ApiResult.success(new ArrayList<>());
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("task/item")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
|
||||
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestBody Long taskId) {
|
||||
List<WmsPoReceiptItem> wmsPoReceipts = wmsPoReceiptItemService.lambdaQuery()
|
||||
.eq(WmsPoReceiptItem::getReceiveId, taskId)
|
||||
.list();
|
||||
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||
return ApiResult.success(Convert.toList(PoReceiveTaskItemVO.class, wmsPoReceipts));
|
||||
} else {
|
||||
return ApiResult.success(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("task/confirm")
|
||||
@ApiMark(moduleName = "送货单管理", apiName = "普通物料任务上架确认")
|
||||
public ApiResult<Void> takeDeliveryConfirm(@Valid @RequestBody PoReceiveTaskConfirmQO request) {
|
||||
|
||||
//首先判断是否已经确认
|
||||
WmsPoReceipt wmsPoReceipt = wmsPoReceiptService.getById(request.getTaskId());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
||||
VUtil.trueThrowBusinessError(Objects.equals(wmsPoReceipt.getIsCompleted(), true)).throwMessage("此任务已入库");
|
||||
List<Long> uniqueIds = request.getItems().stream()
|
||||
.map(PoReceiveTaskItemConfirmQO::getId) // 提取每个对象的 ID
|
||||
.distinct() // 去重
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<WmsPoReceiptItem> wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery()
|
||||
.in(WmsPoReceiptItem::getId, uniqueIds)
|
||||
.list();
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(wmsPoReceiptItems)).throwMessage("获取入库详情失败");
|
||||
List<WmsPoReceiptItem> receiptItems = new ArrayList<>();
|
||||
List<StorageLocationDTO> storageLocationDTOS = new ArrayList<>();
|
||||
List<InventoryDTO> inventories = new ArrayList<>();
|
||||
List<ZWM3A17DTO> zwm3A17DTOS = new ArrayList<>();
|
||||
|
||||
for (WmsPoReceiptItem item : wmsPoReceiptItems) {
|
||||
PoReceiveTaskItemConfirmQO qo = request.getItems().stream()
|
||||
.filter(q -> q.getId().equals(item.getId()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(qo))
|
||||
continue;
|
||||
item.setCrossQty(qo.getCrossQty());
|
||||
item.setReceivedWarehouse(qo.getReceivedWarehouse());
|
||||
item.setInQty(item.getReceiptNum());
|
||||
item.setUpdateTime(LocalDateTime.now());
|
||||
item.setUpdateUserId(UserUtil.getUserId());
|
||||
item.setUpdateUserName(UserUtil.getUserName());
|
||||
receiptItems.add(item);
|
||||
//储位处理
|
||||
if (!qo.getStorageLocation().equals(qo.getStorageLocationNew())) {
|
||||
List<String> bins = Arrays.asList(item.getStorageLocation().split("/"));
|
||||
storageLocationDTOS.add(new StorageLocationDTO()
|
||||
.setBinNos(bins)
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setFactory(wmsPoReceipt.getFactoryCode())
|
||||
);
|
||||
}
|
||||
|
||||
// SAP 和条码处理
|
||||
//传入SAP的信息
|
||||
ZWM3A17DTO zwm3A17DTO = zwm3A17DTOS.stream()
|
||||
.filter(zwm3A17DTO1 -> zwm3A17DTO1.getEbeln().equals(item.getPoNum()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(zwm3A17DTO)) {
|
||||
zwm3A17DTO = new ZWM3A17DTO()
|
||||
.setEbeln(item.getPoNum())
|
||||
.setUsnam(UserUtil.getUserName())
|
||||
.setItem1(new ArrayList<>())
|
||||
.setItem2(new ArrayList<>());
|
||||
zwm3A17DTOS.add(zwm3A17DTO);
|
||||
}
|
||||
|
||||
List<ZWM3A17Item1DTO> item1 = zwm3A17DTO.getItem1();
|
||||
List<ZWM3A17Item2DTO> item2 = zwm3A17DTO.getItem2();
|
||||
|
||||
List<SrmMaterialReceiptScanCodes> scanCode = srmMaterialReceiptScanCodesRepository.findByOrderItemId(item.getOrderItemId().toString());
|
||||
if (CollectionUtil.isEmpty(scanCode)) {
|
||||
scanCode.forEach(code -> {
|
||||
// 库存
|
||||
InventoryDTO inventoryDTO = new InventoryDTO()
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBatchNumber(code.getBatchNumber())
|
||||
.setNum(code.getCodeNum());
|
||||
inventories.add(inventoryDTO);
|
||||
|
||||
item1.add(new ZWM3A17Item1DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setMATNR(item.getItemCode())
|
||||
.setERFMG(code.getCodeNum())
|
||||
.setMEINS(item.getUomCode())
|
||||
.setCHARG(code.getBatchNumber())
|
||||
.setWERKS(wmsPoReceipt.getFactoryCode())
|
||||
.setLGORT(item.getReceivedWarehouse())
|
||||
.setKZKRI("")
|
||||
);
|
||||
|
||||
item2.add(new ZWM3A17Item2DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setFLAG("")
|
||||
.setFLAG(code.getSerialNumbers()));
|
||||
});
|
||||
} else {
|
||||
// 库存
|
||||
InventoryDTO inventoryDTO = new InventoryDTO()
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBatchNumber("")
|
||||
.setNum(item.getInQty());
|
||||
inventories.add(inventoryDTO);
|
||||
|
||||
item1.add(new ZWM3A17Item1DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setMATNR(item.getItemCode())
|
||||
.setERFMG(item.getInQty())
|
||||
.setMEINS(item.getUomCode())
|
||||
.setCHARG("")
|
||||
.setWERKS(wmsPoReceipt.getFactoryCode())
|
||||
.setLGORT(item.getReceivedWarehouse())
|
||||
.setKZKRI("")
|
||||
);
|
||||
}
|
||||
}
|
||||
normalPGIControllerService.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId());
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
||||
/****
|
||||
//一键收货
|
||||
|
||||
|
|
|
|||
|
|
@ -75,11 +75,11 @@ public class NormalQMController extends BaseController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 质检物料上架任务
|
||||
* @param orderNo
|
||||
* 质检物料上架任务(PDA)
|
||||
* @param orderNo 送货单号或任务单号
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("task")
|
||||
@GetMapping("/PDA/task")
|
||||
@ApiMark(moduleName = "质检物料管理", apiName = "质检物料上架任务")
|
||||
public ApiResult<List<QCTaskVO>> getTasks(@RequestParam String orderNo) {
|
||||
List<QCTaskVO> tasks = wmsQcReceiveService.getTasks(orderNo);
|
||||
|
|
@ -88,8 +88,9 @@ public class NormalQMController extends BaseController {
|
|||
|
||||
/**
|
||||
* 质检物料上架物料详情
|
||||
* @param taskId 任务ID
|
||||
* **/
|
||||
@GetMapping("task/item")
|
||||
@GetMapping("PDA/task/item")
|
||||
@ApiMark(moduleName = "质检物料管理", apiName = "质检任务上架物料详情")
|
||||
public ApiResult<List<QCTaskItemVO>> getTaskItem(@Valid @NotNull @RequestParam Long taskId) {
|
||||
List<QCTaskItemVO> tasks = normalQMControllerService.getTaskItem(taskId);
|
||||
|
|
@ -98,8 +99,9 @@ public class NormalQMController extends BaseController {
|
|||
|
||||
/**
|
||||
* 质检物料上架任务确认
|
||||
* @param request
|
||||
* **/
|
||||
@PostMapping("task/confirm")
|
||||
@PostMapping("PDA/task/confirm")
|
||||
@ApiMark(moduleName = "质检物料管理", apiName = "质检任务上架确认")
|
||||
public ApiResult<Void> confirm(@Valid @RequestBody List<QCReceiveTaskConfirmQO> request) {
|
||||
if (CollectionUtil.isEmpty(request))
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ public class POReceiptController {
|
|||
|
||||
/**
|
||||
* 采购单入库列表
|
||||
* @param request
|
||||
*/
|
||||
@PostMapping("search")
|
||||
@ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表")
|
||||
|
|
@ -49,6 +50,7 @@ public class POReceiptController {
|
|||
|
||||
/**
|
||||
* 采购单入库明细
|
||||
* @param inId 入库单ID
|
||||
*/
|
||||
@GetMapping("getItems")
|
||||
@ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表")
|
||||
|
|
@ -59,6 +61,7 @@ public class POReceiptController {
|
|||
|
||||
/**
|
||||
* 获取扫码的详情信息
|
||||
* @param orderItemId 收货单项ID
|
||||
*/
|
||||
@GetMapping("getScanCodes")
|
||||
@ApiMark(moduleName = "采购单入库管理", apiName = "获取扫码的详情信息")
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@ import org.springframework.web.bind.annotation.*;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 质检物料入库单
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("qc")
|
||||
public class QCReceiptController {
|
||||
|
|
@ -33,12 +38,23 @@ public class QCReceiptController {
|
|||
@Resource
|
||||
private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository;
|
||||
|
||||
|
||||
/**
|
||||
* 质检物料入库单列表
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("search")
|
||||
@ApiMark(moduleName = "质检物料入库单", apiName = "入库列表")
|
||||
public ApiResult<PageData<QCReceiptVO>> search(@Valid @RequestBody QCReceiptQO request) {
|
||||
return ApiResult.success(qcReceiveService.search(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 质检物料入库单详情
|
||||
* @param inId 入库单ID
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("getItems")
|
||||
@ApiMark(moduleName = "质检物料入库单", apiName = "入库详情")
|
||||
public ApiResult<List<QCReceiveTaskItemVO>> search(@RequestParam Long inId) {
|
||||
|
|
@ -46,6 +62,11 @@ public class QCReceiptController {
|
|||
.lambdaQuery().eq(WmsQcReceiveItem::getReceiveId, inId).list()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 质检物料入库单扫码详情
|
||||
* @param orderItemId 收货单详情ID
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("getScanCodes")
|
||||
@ApiMark(moduleName = "质检物料入库单", apiName = "获取扫码的详情信息")
|
||||
public ApiResult<List<PDAScanCodeVO>> getScanCodes(@RequestParam String orderItemId) {
|
||||
|
|
|
|||
|
|
@ -112,9 +112,6 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
@Resource
|
||||
private IUserSupplierService userSupplierService;
|
||||
|
||||
@Resource
|
||||
private IWmsInventoryService inventoryService;
|
||||
|
||||
@Resource
|
||||
private IWmsStorageService storageService;
|
||||
|
||||
|
|
@ -337,15 +334,6 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
return ApiResult.success(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取零件扫码记录
|
||||
* @param id 零件id
|
||||
*/
|
||||
@GetMapping("getScanRecord")
|
||||
public ApiResult<List<PackageMaterialScanRecord>> getScanRecord(@Valid @RequestParam @NotNull Long id) {
|
||||
return ApiResult.success(packageMaterialScanRecordRepository.findByTrayItemId(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param ids 要删除的id列表
|
||||
|
|
@ -858,4 +846,15 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
public ApiResult<List<WmsInTaskItem>> getTicketItems(@Valid @RequestParam @NotBlank String taskNo) {
|
||||
return ApiResult.success(inTaskItemService.getByNo(taskNo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取扫码记录
|
||||
* @param poNum 采购订单号
|
||||
* @param materialNo 物料编号
|
||||
*/
|
||||
@GetMapping("getScanRecord")
|
||||
public ApiResult<List<PackageMaterialScanRecord>> getScanRecord(@Valid @RequestParam @NotBlank String poNum
|
||||
, @Valid @RequestParam @NotBlank String materialNo) {
|
||||
return ApiResult.success(packageMaterialScanRecordRepository.findByPoNumAndMaterialNo(poNum, materialNo));
|
||||
}
|
||||
}
|
||||
|
|
@ -113,6 +113,7 @@ public class TransferCompanyController extends BaseController {
|
|||
.throwMessage("物料" + item.getMatnr() + "的申请数量超出库存限制");
|
||||
WmsTransferCompanyItem data = Convert.convert(WmsTransferCompanyItem.class, item);
|
||||
data.setOrderId(order.getId());
|
||||
data.setLeft(data.getNum());
|
||||
transferCompanyItemService.save(data);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -43,6 +43,11 @@ public class InventoryCheckTaskScanRecord {
|
|||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 物料描述
|
||||
*/
|
||||
private String materialDesc;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -26,6 +26,11 @@ public class PackageMaterialScanRecord {
|
|||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 采购订单号
|
||||
*/
|
||||
private String poNum;
|
||||
|
||||
/**
|
||||
* 二维码内容
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -9,6 +9,5 @@ import java.util.List;
|
|||
@Repository
|
||||
public interface PackageMaterialScanRecordRepository extends MongoRepository<PackageMaterialScanRecord, String> {
|
||||
|
||||
List<PackageMaterialScanRecord> findByTrayItemId(Long trayItemId);
|
||||
|
||||
List<PackageMaterialScanRecord> findByPoNumAndMaterialNo(String poNum, String materialNo);
|
||||
}
|
||||
|
|
@ -113,7 +113,8 @@ public class NormalPGIControllerService {
|
|||
*/
|
||||
public PDAOrderVO getOrderItemByOrderNo(@RequestParam String orderNo) {
|
||||
// 根据订单编号查询订单主表信息
|
||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo).eq(WmsSrmOrder::getIsCompleted, false).one();
|
||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo)
|
||||
.eq(WmsSrmOrder::getIsCompleted, false).one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("此收货单[" + orderNo + "] 单号无效");
|
||||
|
||||
PDAOrderVO pdaOrderVO = new PDAOrderVO();
|
||||
|
|
@ -140,7 +141,8 @@ public class NormalPGIControllerService {
|
|||
itemVO.setIsQuality(item.getIsQuality());
|
||||
itemVO.setOrderQty(item.getOrderQty());
|
||||
itemVO.setUomCode(item.getUomCode());
|
||||
itemVO.setDeliveryQty(item.getDeliveryQty().multiply(item.getReceiptQty()));
|
||||
itemVO.setLineNumber(item.getLineNumber());
|
||||
itemVO.setDeliveryQty(item.getDeliveryQty().subtract(item.getReceiptQty()));
|
||||
// 从 SAP 系统获取物料相关信息
|
||||
SAPSyncParamsDTO syncParamsDTO = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), order.getSupplierNum(), item.getItemCode());
|
||||
if (Objects.nonNull(syncParamsDTO)) {
|
||||
|
|
@ -213,7 +215,7 @@ public class NormalPGIControllerService {
|
|||
|
||||
//生成普通物料的入库待检单,并修改送货单相应的收货数量
|
||||
if (CollectionUtil.isNotEmpty(wmsPoReceiptItems)) {
|
||||
wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(1));
|
||||
wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(2));
|
||||
wmsPoReceiptService.save(wmsPoReceipt);
|
||||
wmsPoReceiptItemService.saveBatch(wmsPoReceiptItems);
|
||||
|
||||
|
|
@ -223,7 +225,7 @@ public class NormalPGIControllerService {
|
|||
}
|
||||
//生成质检物料的入库待检单,并修改送货单相应的收货数量
|
||||
if (CollectionUtil.isNotEmpty(wmsQcReceiveItems)) {
|
||||
wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(2));
|
||||
wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(1));
|
||||
wmsQcReceiveService.save(wmsQcReceive);
|
||||
wmsQcReceiveItemService.saveBatch(wmsQcReceiveItems);
|
||||
for (WmsQcReceiveItem wmsQcReceiveItem : wmsQcReceiveItems) {
|
||||
|
|
@ -241,7 +243,7 @@ public class NormalPGIControllerService {
|
|||
if (CollectionUtil.isNotEmpty(srmMaterialReceiptScanCodes)) {
|
||||
srmMaterialReceiptCanCodesRepository.insert(srmMaterialReceiptScanCodes);
|
||||
}
|
||||
|
||||
/** 调试暂时关闭
|
||||
if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) {
|
||||
for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) {
|
||||
//导入SAP
|
||||
|
|
@ -262,6 +264,7 @@ public class NormalPGIControllerService {
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import jakarta.annotation.Resource;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
|
@ -21,6 +22,25 @@ public class SAPCommonService {
|
|||
private SapService sapService;
|
||||
|
||||
public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) {
|
||||
|
||||
SAPSyncParamsDTO dto = new SAPSyncParamsDTO();
|
||||
dto.setMaktx("物料描述");
|
||||
dto.setEbelp("1");
|
||||
dto.setMatnr(materialNo);
|
||||
dto.setMenge(new BigDecimal(100));
|
||||
dto.setWemng(new BigDecimal(10));
|
||||
dto.setMeins("PC");
|
||||
dto.setEbeln(orderNo);
|
||||
dto.setTransportNum(new BigDecimal(80));
|
||||
dto.setMatkl("物料组");
|
||||
dto.setWgbez("物料描述");
|
||||
dto.setWerks("1010");
|
||||
dto.setLbprt("1");
|
||||
dto.setKzkri("");
|
||||
dto.setWarehouseNo("122222");
|
||||
dto.setBinNos("2121");
|
||||
return dto;
|
||||
/**
|
||||
//获取订单信息
|
||||
SAPMaterialInfoInOrderDTO materialInfoInOrder = CollectionUtil.get(sapService.zim004(orderNo, supplierNo, materialNo), 0);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo);
|
||||
|
|
@ -43,7 +63,7 @@ public class SAPCommonService {
|
|||
//获取仓库信息
|
||||
List<String> warehouseNos = new ArrayList<>();
|
||||
warehouseNos.add(materialInfoInOrder.getWarehouseNo());
|
||||
List<String> materialNos=new ArrayList<>();
|
||||
List<String> materialNos = new ArrayList<>();
|
||||
materialNos.add(materialInfoInOrder.getMatnr());
|
||||
List<SAPSyncFromDTO> list = sapService.zwm3A01(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null);
|
||||
if (!CollectionUtil.isEmpty(list)) {
|
||||
|
|
@ -53,6 +73,7 @@ public class SAPCommonService {
|
|||
syncParams.setBinNos(dbWarehouse.getBinNos());
|
||||
}
|
||||
return syncParams;
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ server:
|
|||
port: 8101
|
||||
spring:
|
||||
application:
|
||||
name: auth
|
||||
name: auth-local
|
||||
profiles:
|
||||
active: sit
|
||||
config:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import lombok.Data;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Objects;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
|
|
@ -136,6 +137,15 @@ public class AllocationOrderDTO{
|
|||
*/
|
||||
private String ekgrp;
|
||||
|
||||
/**
|
||||
* 转储数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
public BigDecimal getNum() {
|
||||
return Objects.isNull(num) ? sqsl2 : num;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
private String key;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,11 @@ import cn.hutool.core.date.DateTime;
|
|||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class QCReceiptQO extends PageQO {
|
||||
public class QCReceiptQO extends SearchBaseQO {
|
||||
|
||||
/**
|
||||
* 送货单号
|
||||
|
|
@ -26,22 +28,30 @@ public class QCReceiptQO extends PageQO {
|
|||
/**
|
||||
* 送货开始时间
|
||||
*/
|
||||
private DateTime deliveryStartDate;
|
||||
private LocalDate deliveryStartDate;
|
||||
|
||||
/**
|
||||
* 送货结束时间
|
||||
*/
|
||||
private DateTime deliveryEndDate;
|
||||
private LocalDate deliveryEndDate;
|
||||
|
||||
public LocalDate getDeliveryEndDate() {
|
||||
return deliveryEndDate == null ? null : deliveryEndDate.plusDays(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 收货开始时间
|
||||
*/
|
||||
private DateTime receiveStartDate;
|
||||
private LocalDate receiveStartDate;
|
||||
|
||||
/**
|
||||
* 收货结束时间
|
||||
*/
|
||||
private DateTime receiveEndDate;
|
||||
private LocalDate receiveEndDate;
|
||||
|
||||
public LocalDate getReceiveEndDate() {
|
||||
return receiveEndDate == null ? null : receiveEndDate.plusDays(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 入库单号
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class SRMOrderReceiveItemQO {
|
|||
/**
|
||||
* 送货单行状态
|
||||
*/
|
||||
private Integer noteLineStatus;
|
||||
private String noteLineStatus;
|
||||
|
||||
/**
|
||||
* 采购订单类型
|
||||
|
|
|
|||
|
|
@ -25,4 +25,5 @@ public class SRMOrderSearchQO extends SearchBaseQO {
|
|||
* 物料编号
|
||||
*/
|
||||
private String itemCode;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,12 @@ public class InTaskVO {
|
|||
private String orderNumber;
|
||||
|
||||
/**
|
||||
* 任务时间
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 上架时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -58,4 +58,13 @@ public class InventoryCheckTaskItemMaterialVO {
|
|||
* 库存数量
|
||||
*/
|
||||
private BigDecimal inventoryNum;
|
||||
|
||||
/**
|
||||
* 差异数量
|
||||
*/
|
||||
private BigDecimal differenceNum;
|
||||
|
||||
public BigDecimal getDifferenceNum() {
|
||||
return this.inventoryNum.subtract(this.num);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import cn.hutool.core.date.DateTime;
|
|||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class QCReceiptVO {
|
||||
|
|
@ -59,11 +61,11 @@ public class QCReceiptVO {
|
|||
/**
|
||||
* 是否已入库,true 是;false 否
|
||||
*/
|
||||
private boolean isCompleted;
|
||||
private Boolean isCompleted;
|
||||
/**
|
||||
* 收货时间
|
||||
*/
|
||||
private DateTime receiveTime;
|
||||
private LocalDateTime receiveTime;
|
||||
/**
|
||||
* 收货人
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -121,15 +121,4 @@ public class QCReceiveTaskItemVO {
|
|||
*/
|
||||
private String materialDocYear;
|
||||
|
||||
/**
|
||||
* 入库时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
/**
|
||||
* 入库人姓名
|
||||
*/
|
||||
private String updateUserName;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,18 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class SrmOrderVO {
|
||||
|
||||
/**
|
||||
* 送货单ID
|
||||
*/
|
||||
private Long Id;
|
||||
|
||||
/**
|
||||
* 送货单号
|
||||
|
|
@ -49,5 +57,5 @@ public class SrmOrderVO {
|
|||
/**
|
||||
* 是否完成收货
|
||||
*/
|
||||
private boolean isCompleted;
|
||||
private Boolean isCompleted;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,4 +110,9 @@ public class TransferCompanyItemVO {
|
|||
* 剩余数量
|
||||
*/
|
||||
private BigDecimal left;
|
||||
|
||||
/**
|
||||
* 转储数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -141,19 +141,4 @@ public class WmsQcReceiveItem implements Serializable {
|
|||
* 物料年度凭证
|
||||
*/
|
||||
private String materialDocYear;
|
||||
|
||||
/**
|
||||
* 入库时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 入库人ID
|
||||
*/
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 入库人姓名
|
||||
*/
|
||||
private String updateUserName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public class WmsSrmOrderItem implements Serializable {
|
|||
/**
|
||||
* 送货单行状态
|
||||
*/
|
||||
private Short noteLineStatus;
|
||||
private String noteLineStatus;
|
||||
|
||||
/**
|
||||
* 采购订单类型
|
||||
|
|
|
|||
|
|
@ -125,6 +125,11 @@ public class WmsTransferCompanyItem implements Serializable {
|
|||
*/
|
||||
private String ekgrp;
|
||||
|
||||
/**
|
||||
* 转储数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
/**
|
||||
* 剩余数量
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.nflg.wms.repository.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.wms.common.pojo.qo.QCReceiptQO;
|
||||
import com.nflg.wms.common.pojo.vo.QCReceiptVO;
|
||||
import com.nflg.wms.common.pojo.vo.QCTaskVO;
|
||||
|
|
@ -21,5 +22,5 @@ public interface WmsQcReceiveMapper extends BaseMapper<WmsQcReceive> {
|
|||
|
||||
List<QCTaskVO> getTasks(String orderNo);
|
||||
|
||||
IPage<QCReceiptVO> search(QCReceiptQO request);
|
||||
IPage<QCReceiptVO> search(QCReceiptQO request, Page<Object> objectPage);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.convert.Convert;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.EnableMenuQO;
|
||||
import com.nflg.wms.common.pojo.qo.MenuButtonAddQO;
|
||||
|
|
@ -15,7 +16,6 @@ import com.nflg.wms.common.util.UserUtil;
|
|||
import com.nflg.wms.repository.entity.MenuButton;
|
||||
import com.nflg.wms.repository.mapper.MenuButtonMapper;
|
||||
import com.nflg.wms.repository.service.IMenuButtonService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
|
@ -37,6 +37,8 @@ public class MenuButtonServiceImpl extends ServiceImpl<MenuButtonMapper, MenuBut
|
|||
IPage<MenuButton> page = lambdaQuery()
|
||||
.eq(Objects.nonNull(request.getMenuId()), MenuButton::getMenuId, request.getMenuId())
|
||||
.like(StrUtil.isNotBlank(request.getName()), MenuButton::getName, request.getName())
|
||||
.orderByAsc(MenuButton::getSort)
|
||||
.orderByAsc(MenuButton::getId)
|
||||
.page(new Page<>(request.getPage(), request.getPageSize()));
|
||||
return PageUtil.convert(page, d -> Convert.convert(MenuButtonVO.class, d));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
|||
if (StrUtil.isNotBlank(request.getName())) {
|
||||
queryWrapper.like(Menu::getName, request.getName());
|
||||
}
|
||||
queryWrapper.orderByDesc(Menu::getSort);
|
||||
queryWrapper.orderByAsc(Menu::getSort);
|
||||
queryWrapper.orderByAsc(Menu::getId);
|
||||
List<Menu> list = baseMapper.selectList(queryWrapper);
|
||||
//找出非根节点
|
||||
List<Menu> roots = list.stream().filter(l -> Objects.equals(l.getParentId(), 0L)).collect(Collectors.toList());
|
||||
|
|
@ -225,7 +226,9 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
|||
IPage<Menu> page = new Page<>();
|
||||
page.setCurrent(request.getPage());
|
||||
page.setSize(request.getPageSize());
|
||||
lambdaQuery().eq(Menu::getParentId, 0)
|
||||
lambdaQuery()
|
||||
.eq(Menu::getParentId, 0)
|
||||
.orderByAsc(Menu::getSort)
|
||||
.orderByAsc(Menu::getId)
|
||||
.page(page);
|
||||
List<MenuVO> datas = convert(page.getRecords());
|
||||
|
|
@ -252,7 +255,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
|||
|
||||
private List<MenuVO> getChildren(Long parentId) {
|
||||
List<MenuVO> datas = convert(lambdaQuery().eq(Menu::getParentId, parentId)
|
||||
.orderByDesc(Menu::getSort)
|
||||
.orderByAsc(Menu::getSort)
|
||||
.orderByAsc(Menu::getId)
|
||||
.list());
|
||||
datas.forEach(d -> d.setChildren(getChildren(d.getId())));
|
||||
return datas;
|
||||
|
|
@ -268,6 +272,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
|||
List<MenuButton> vos = menuButtonService.lambdaQuery()
|
||||
.eq(MenuButton::getMenuId, menu.getId())
|
||||
.eq(MenuButton::getEnable, true)
|
||||
.orderByAsc(MenuButton::getSort)
|
||||
.orderByAsc(MenuButton::getId)
|
||||
.list();
|
||||
menu.setChildren(vos.stream()
|
||||
.map(d -> new MenuAuthorizeVO().setType(2).setId(d.getId()).setKey("button-"+d.getId()).setName(d.getName()).setSelected(buttonIsSelected(roleId, d.getId())))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.wms.repository.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QCReceiptQO;
|
||||
import com.nflg.wms.common.pojo.vo.POReceiptVO;
|
||||
|
|
@ -32,7 +33,7 @@ public class WmsQcReceiveServiceImpl extends ServiceImpl<WmsQcReceiveMapper, Wms
|
|||
|
||||
@Override
|
||||
public IPage<QCReceiptVO> search(QCReceiptQO request) {
|
||||
return baseMapper.search(request);
|
||||
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,46 +19,35 @@
|
|||
wms_srm_order b on a.order_no=b.note_num
|
||||
left join user_supplier c on b.supplier_num=c.supplier_code
|
||||
<where>
|
||||
<if test="request.inNum !=null and request.inNum !='' ">
|
||||
<if test="request.inNum !=null and request.inNum !=''">
|
||||
and a.in_num like concat('%', #{request.inNum}, '%')
|
||||
</if>
|
||||
|
||||
<if test="request.orderNo !=null and request.orderNo !='' ">
|
||||
<if test="request.orderNo !=null and request.orderNo !=''">
|
||||
and b.note_num like concat('%', #{request.orderNo}, '%')
|
||||
</if>
|
||||
|
||||
<if test="request.supplierNum !=null and request.supplierNum !='' ">
|
||||
and b.supplier_num =#{request.supplierNum}
|
||||
<if test="request.supplierNum !=null and request.supplierNum !=''">
|
||||
and b.supplier_num = #{request.supplierNum}
|
||||
</if>
|
||||
|
||||
|
||||
<if test="request.receiveStartDate !=null">
|
||||
and a.create_time >= #{request.receiveStartDate}
|
||||
</if>
|
||||
|
||||
<if test="request.receiveEndDate !=null">
|
||||
and a.create_time <= #{request.receiveEndDate}
|
||||
</if>
|
||||
|
||||
<if test="request.deliveryStartDate !=null">
|
||||
and b.delivery_note_date >=
|
||||
#{request.deliveryStartDate, jdbcType=TIMESTAMP, javaType=java.time.LocalDate, typeHandler=org.apache.ibatis.type.LocalDateTypeHandler}
|
||||
#{request.deliveryStartDate}
|
||||
</if>
|
||||
|
||||
<if test="request.deliveryEndDate !=null">
|
||||
and b.delivery_note_date <=
|
||||
#{request.deliveryEndDate, jdbcType=TIMESTAMP, javaType=java.time.LocalDate, typeHandler=org.apache.ibatis.type.LocalDateTypeHandler}
|
||||
#{request.deliveryEndDate}
|
||||
</if>
|
||||
|
||||
|
||||
<if test="request.inStartDate !=null">
|
||||
and a.update_time >= #{request.inStartDate}
|
||||
</if>
|
||||
|
||||
<if test="request.inEndDate !=null">
|
||||
and a.update_time <= #{request.inEndDate}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
order by a.create_time desc
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -41,38 +41,27 @@
|
|||
wms_srm_order b on a.order_no = b.note_num
|
||||
left join user_supplier c on b.supplier_num = c.supplier_code
|
||||
<where>
|
||||
<if test="request.inNum !=null and request.inNum !='' ">
|
||||
and a.in_num like concat('%', #{request.inNum}, '%')
|
||||
<if test="request.inNum !=null and request.inNum !=''">
|
||||
and a.in_no like concat('%', #{request.inNum}, '%')
|
||||
</if>
|
||||
|
||||
<if test="request.orderNo !=null and request.orderNo !='' ">
|
||||
<if test="request.orderNo !=null and request.orderNo !=''">
|
||||
and b.note_num like concat('%', #{request.orderNo}, '%')
|
||||
</if>
|
||||
|
||||
<if test="request.supplierNum !=null and request.supplierNum !='' ">
|
||||
<if test="request.supplierNum !=null and request.supplierNum !=''">
|
||||
and b.supplier_num =#{request.supplierNum}
|
||||
</if>
|
||||
<if test="request.itemCode !=null and request.itemCode !='' ">
|
||||
and EXISTS (select 1 from wms_srm_order_item where a.id=wms_srm_order_item.order_id and
|
||||
wms_srm_order_item.item_code like concat('%', #{request.itemCode}, '%')
|
||||
</if>
|
||||
|
||||
<if test="request.receiveStartDate !=null and request.receiveStartDate !='' ">
|
||||
<if test="request.receiveStartDate !=null">
|
||||
and a.create_time >= #{request.receiveStartDate}
|
||||
</if>
|
||||
|
||||
<if test="request.receiveEndDate !=null and request.receiveEndDate !='' ">
|
||||
<if test="request.receiveEndDate !=null">
|
||||
and a.create_time < #{request.receiveEndDate}
|
||||
</if>
|
||||
|
||||
<if test="request.deliveryStartDate !=null and request.deliveryStartDate !='' ">
|
||||
and a.delivery_note_date >= #{request.deliveryStartDate}
|
||||
<if test="request.deliveryStartDate !=null">
|
||||
and b.delivery_note_date >= #{request.deliveryStartDate}
|
||||
</if>
|
||||
|
||||
<if test="request.deliveryEndDate !=null and request.deliveryEndDate !='' ">
|
||||
and a.delivery_note_date < #{request.deliveryEndDate}
|
||||
<if test="request.deliveryEndDate !=null">
|
||||
and b.delivery_note_date < #{request.deliveryEndDate}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
order by a.create_time desc
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderMapper">
|
||||
<select id="search" resultType="com.nflg.wms.common.pojo.vo.SrmOrderVO">
|
||||
select a.iu_code,a.note_num,a.purchase_group,a.waybill_num,a.supplier_num,a.create_time, a.delivery_note_date
|
||||
select a.id, a.iu_code,a.note_num,a.purchase_group,a.waybill_num,a.supplier_num,a.create_time, a.delivery_note_date
|
||||
,a.ou_code, a.is_completed,
|
||||
b.supplier_name from wms_srm_order a left join user_supplier b on a.supplier_num=b.supplier_code
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.nflg.wms.common.pojo.qo.SRMOrderReceiveItemQO;
|
||||
import com.nflg.wms.common.pojo.qo.SRMOrderReceiveQO;
|
||||
import com.nflg.wms.common.pojo.qo.SRMQualityInspectionResult;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
|
|
@ -58,10 +59,7 @@ public class SRMController extends BaseController {
|
|||
public Object receiveOrder(@RequestBody SRMOrderReceiveQO request) {
|
||||
try {
|
||||
WmsSrmOrder order = srmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.getNoteNum()).one();
|
||||
if (Objects.nonNull(order)) {
|
||||
// srmOrderService.removeById(order);
|
||||
// srmOrderItemService.remove(new LambdaQueryWrapper<WmsSrmOrderItem>().eq(WmsSrmOrderItem::getOrderId, order.getId()));
|
||||
} else {
|
||||
if (Objects.isNull(order)) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
LocalDateTime deliveryDate = LocalDateTime.parse(request.getDeliveryNoteDate(), formatter);
|
||||
order = new WmsSrmOrder()
|
||||
|
|
@ -74,16 +72,41 @@ public class SRMController extends BaseController {
|
|||
.setPurchaseGroup(request.getPurchaseGroup())
|
||||
.setOuCode(request.getOuCode())
|
||||
.setDeliveryNoteDate(deliveryDate)
|
||||
.setIsCompleted(false)
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
srmOrderService.save(order);
|
||||
}
|
||||
WmsSrmOrder finalOrder = order;
|
||||
srmOrderItemService.saveBatch(request.getResultSet().stream().map(it -> {
|
||||
WmsSrmOrderItem item = Convert.convert(WmsSrmOrderItem.class, it);
|
||||
item.setOrderId(finalOrder.getId());
|
||||
item.setReceiptQty(new BigDecimal(0));
|
||||
return item;
|
||||
}).toList());
|
||||
//判断是否存在子集
|
||||
if (CollectionUtil.isNotEmpty(request.getResultSet())) {
|
||||
List<WmsSrmOrderItem> items = new ArrayList<>();
|
||||
for (SRMOrderReceiveItemQO it : request.getResultSet()) {
|
||||
WmsSrmOrderItem item = srmOrderItemService.lambdaQuery().eq(WmsSrmOrderItem::getLineNumber, it.getLineNumber())
|
||||
.eq(WmsSrmOrderItem::getNoteNum, request.getNoteNum())
|
||||
.one();
|
||||
if (Objects.isNull(item) || item.getNoteNum().equals(null) || item.getNoteNum().equals("")) {
|
||||
WmsSrmOrderItem updateItem = new WmsSrmOrderItem()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setOrderId(order.getId())
|
||||
.setLineNumber(it.getLineNumber())
|
||||
.setPoNum(it.getPoNum())
|
||||
.setPoLineNumber(it.getPoLineNumber())
|
||||
.setItemCode(it.getItemCode())
|
||||
.setItemName(it.getItemName())
|
||||
.setOrderQty(it.getOrderQty())
|
||||
.setUomCode(it.getUomCode())
|
||||
.setDemandDate(it.getDemandDate())
|
||||
.setNoteLineStatus(it.getNoteLineStatus())
|
||||
.setOrderType(it.getOrderType())
|
||||
.setDeliveryQty(it.getDeliveryQty())
|
||||
.setIsQuality(it.getIsQuality())
|
||||
.setNoteNum(request.getNoteNum())
|
||||
.setReceiptQty(new BigDecimal(0));
|
||||
items.add(updateItem);
|
||||
}
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(items))
|
||||
srmOrderItemService.saveBatch(items);
|
||||
}
|
||||
return 0;
|
||||
} catch (Exception ex) {
|
||||
log.error("SRM送货单保存失败", ex);
|
||||
|
|
|
|||
Loading…
Reference in New Issue