Merge remote-tracking branch '惠信/feature/NoScanning' into feature/NoScanning

This commit is contained in:
曹鹏飞 2026-06-12 16:01:11 +08:00
commit 6255ed5b94
7 changed files with 263 additions and 3 deletions

View File

@ -13,6 +13,7 @@ import com.nflg.wms.admin.pojo.request.UpdateItemNumRequest;
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
import com.nflg.wms.admin.repository.InventoryForOutRepository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.repository.TransferFactoryNoScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.NoScanningBaseControllerService;
import com.nflg.wms.admin.service.SapService;
@ -27,6 +28,7 @@ import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
import com.nflg.wms.common.pojo.document.OutMaterialScanRecord;
import com.nflg.wms.common.pojo.document.TransferFactoryNoScanRecord;
import com.nflg.wms.common.pojo.dto.*;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*;
@ -115,15 +117,17 @@ public class TransferFactoryController extends BaseController {
@Resource
private NoScanningBaseControllerService noScanningBaseControllerService;
@Resource
private TransferFactoryNoScanRecordRespository transferFactoryNoScanRecordRespository;;
/**
* 查询SAP领料订单数据
*/
@PostMapping("searchSAP")
public ApiResult<PageData<TransferOrderDTO>> searchSAP0(@Valid @RequestBody TransferOrderQO request) {
List<TransferOrderDTO> datas = sapService.zwm3a16(request);
if (CollectionUtil.isNotEmpty(datas)){
if (CollectionUtil.isNotEmpty(datas)) {
datas.forEach(dto -> {
dto.setLockedNum(transferFactoryItemService.getLockedNum(dto.getAufnr(),dto.getMatnr()));
dto.setLockedNum(transferFactoryItemService.getLockedNum(dto.getAufnr(), dto.getMatnr()));
});
}
return ApiResult.success(PageUtil.Page(datas, request.getPage(), request.getPageSize()));
@ -660,6 +664,28 @@ public class TransferFactoryController extends BaseController {
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
if (!Objects.isNull(request) && CollectionUtil.isNotEmpty(request.getItems())) {
List<TransferFactoryNoScanRecord> temRecords = new ArrayList<>();
request.getItems().forEach(item -> {
if (CollectionUtil.isNotEmpty(item.getDatas())) {
item.getDatas().forEach(data -> {
temRecords.add(new TransferFactoryNoScanRecord()
.setId(request.getId())
.setItemId(item.getOrderItemId())
.setNum(data.getNum())
.setBatchNo(data.getBatchNo())
.setSerialNo(data.getSerialNo())
.setBinNo(data.getBinNo())
);
});
} });
if(CollectionUtil.isNotEmpty(temRecords))
{
transferFactoryNoScanRecordRespository.saveAll(temRecords);
}
}
return ApiResult.success();
}
@ -759,7 +785,51 @@ public class TransferFactoryController extends BaseController {
*/
@GetMapping("pda/getTicketForIn")
public ApiResult<List<TransferFactoryTicketVO>> getTicketForOut(@Valid @RequestParam @NotBlank String no) {
return ApiResult.success(transferFactoryTicketService.getVOByOrderNo(no));
List<TransferFactoryTicketVO> vos=transferFactoryTicketService.getVOByOrderNo(no);
if(CollectionUtil.isNotEmpty(vos))
{
vos.forEach(p -> {
List<NoScanningItemQO> items = new ArrayList<>();
List<WmsTransferFactoryItem> wmsItems=transferFactoryItemService.lambdaQuery()
.eq(WmsTransferFactoryItem::getOrderId, p.getId())
.list();
if(CollectionUtil.isNotEmpty(wmsItems))
{
wmsItems.forEach(wmsItem -> {
List<NoScanningItemDataQO> dataQOS=new ArrayList<>();
List<TransferFactoryNoScanRecord> mongoRecords=
transferFactoryNoScanRecordRespository.getTransferFactoryNoScanRecordBy(
p.getId(),
wmsItem.getId());
if(CollectionUtil.isNotEmpty(mongoRecords))
{
mongoRecords.forEach(mongoRecord -> {
dataQOS.add(new NoScanningItemDataQO()
.setBinNo(mongoRecord.getBinNo())
.setNum(mongoRecord.getNum())
.setSerialNo(mongoRecord.getSerialNo())
.setBatchNo(mongoRecord.getBatchNo())
);
});
}
items.add(new NoScanningItemQO()
.setOrderItemId(wmsItem.getId())
.setWarehouseNo(p.getUmlgo())
.setMaterialNo(wmsItem.getMatnr())
.setDatas(dataQOS)
);
});
}
NoScanningQO qo = new NoScanningQO()
.setId(p.getId())
.setNo(p.getNo())
.setItems(items);
p.noScannings.add(qo);
});
}
return ApiResult.success(vos);
}
/**

View File

@ -0,0 +1,13 @@
package com.nflg.wms.admin.repository;
import com.nflg.wms.common.pojo.document.TransferFactoryNoScanRecord;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface TransferFactoryNoScanRecordRespository
extends MongoRepository<TransferFactoryNoScanRecord, String> {
List<TransferFactoryNoScanRecord> getTransferFactoryNoScanRecordBy(Long id, Long itemId);
}

View File

@ -0,0 +1,47 @@
package com.nflg.wms.common.pojo.document;
import cn.hutool.core.util.StrUtil;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.mongodb.core.mapping.Document;
import java.math.BigDecimal;
@Data
@Accessors(chain = true)
@Document(collection = "TransferFactoryNoScanRecord")
public class TransferFactoryNoScanRecord {
/**
* 转储单ID
*/
private Long id;
/**
* 转储单项目Id
*/
private Long ItemId;
/**
* 数量
*/
@NotNull
private BigDecimal num;
/**
* 批次号
*/
private String batchNo;
/**
* 序列号
*/
private String serialNo;
/**
* 库位
*/
private String binNo;
}

View File

@ -0,0 +1,55 @@
package com.nflg.wms.common.pojo.qo;
import cn.hutool.core.util.StrUtil;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Data
@Accessors(chain = true)
public class NoScanningItemDataQO {
/**
* 数量
*/
@NotNull
private BigDecimal num;
/**
* 批次号
*/
private String batchNo;
public String getBatchNo(){
if (StrUtil.isBlank(batchNo)){
return "";
}
return batchNo;
}
/**
* 序列号
*/
private String serialNo;
public String getSerialNo(){
if (StrUtil.isBlank(serialNo)){
return "";
}
return serialNo;
}
/**
* 库位
*/
private String binNo;
public String getBinNo(){
if (StrUtil.isBlank(binNo)){
return "";
}
return binNo;
}
}

View File

@ -0,0 +1,40 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class NoScanningItemQO {
/**
* 订单项ID
*/
@NotNull
private Long orderItemId;
/**
* 物料编号
*/
@NotBlank
private String materialNo;
/**
* 库存地点编号
*/
@NotBlank
private String warehouseNo;
/**
* 明细列表
*/
@Valid
@NotEmpty
private List<NoScanningItemDataQO> datas;
}

View File

@ -0,0 +1,26 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class NoScanningQO {
/**
* 订单id
*/
private Long id;
/**
* 订单号
*/
private String no;
@Valid
@NotEmpty
private List<NoScanningItemQO> items;
}

View File

@ -1,9 +1,12 @@
package com.nflg.wms.common.pojo.vo;
import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.pojo.document.TransferFactoryNoScanRecord;
import com.nflg.wms.common.pojo.qo.NoScanningQO;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class TransferFactoryTicketVO {
@ -133,4 +136,10 @@ public class TransferFactoryTicketVO {
* 审核时间
*/
public LocalDateTime auditTime;
/**
* 未扫描的物料凭证
*/
public List<NoScanningQO> noScannings;
}