feat(normal-pgi): 新增出库物料扫码记录功能
- 引入 OutMaterialScanRecordRespository 和相关文档类 - 添加 Instant 时间类型支持 - 注入出库物料扫码记录仓库实例 - 修改数据分组逻辑以支持 CrossQO 类型 - 创建出库物料扫码记录列表并初始化 - 在工单项目创建时同步生成扫码记录 - 为每个二维码生成对应的扫码记录详情 - 批量保存出库物料扫码记录到数据库
This commit is contained in:
parent
8b087ce00a
commit
194e3c8a75
|
|
@ -11,6 +11,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.crypto.digest.DigestUtil;
|
||||
import com.nflg.wms.admin.pojo.dto.*;
|
||||
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
|
||||
import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository;
|
||||
import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository;
|
||||
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
||||
|
|
@ -22,6 +23,7 @@ import com.nflg.wms.common.constant.STATE;
|
|||
import com.nflg.wms.common.exception.NflgException;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.document.OutMaterialScanRecord;
|
||||
import com.nflg.wms.common.pojo.document.SrmMaterialReceiptNoScanCodes;
|
||||
import com.nflg.wms.common.pojo.document.SrmMaterialReceiptScanCodes;
|
||||
import com.nflg.wms.common.pojo.dto.*;
|
||||
|
|
@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
|
@ -115,6 +118,9 @@ public class NormalPGIController extends BaseController {
|
|||
|
||||
@Resource
|
||||
private IWmsWarehouseService wmsWarehouseService;
|
||||
|
||||
@Resource
|
||||
private OutMaterialScanRecordRespository outMaterialScanRecordRespository;
|
||||
//收货单分页
|
||||
|
||||
/**
|
||||
|
|
@ -1299,10 +1305,11 @@ public class NormalPGIController extends BaseController {
|
|||
// );
|
||||
// });
|
||||
// qos.forEach(this::takeDeliveryConfirm);
|
||||
Map<String, List<Zwm3a07VO>> maps = datas.stream().collect(Collectors.groupingBy(Zwm3a07VO::getKey2));
|
||||
Map<String, List<CrossQO>> maps = datas.stream().collect(Collectors.groupingBy(CrossQO::getKey2));
|
||||
List<WmsOutProduce> pOrders = new ArrayList<>();
|
||||
List<WmsOutProduceTicket> tickets = new ArrayList<>();
|
||||
List<WmsOutProduceTicketItem> ticketItems = new ArrayList<>();
|
||||
List<OutMaterialScanRecord> records = new ArrayList<>();
|
||||
maps.forEach((key, items) -> {
|
||||
WmsOutProduce order = Convert.convert(WmsOutProduce.class, items.get(0));
|
||||
order.setId(IdUtil.getSnowflakeNextId());
|
||||
|
|
@ -1336,12 +1343,38 @@ public class NormalPGIController extends BaseController {
|
|||
} else {
|
||||
throw new NflgException(STATE.BusinessError, "获取锁失败");
|
||||
}
|
||||
ticketItems.add(
|
||||
new WmsOutProduceTicketItem()
|
||||
WmsOutProduceTicketItem ticketItem=new WmsOutProduceTicketItem()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setProduceItemId(itemId)
|
||||
.setNum(item.getSqsl())
|
||||
.setNum(item.getSqsl());
|
||||
ticketItems.add(ticketItem);
|
||||
item.getQrCodes().forEach(qr->{
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||
.filter(qit -> qit.getBarcodeCode().equals(qr.getCodeId()))
|
||||
.findFirst()
|
||||
.get();
|
||||
records.add(new OutMaterialScanRecord()
|
||||
.setSource(1)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(itemId)
|
||||
.setTicketId(ticket.getId())
|
||||
.setTicketItemId(ticketItem.getId())
|
||||
.setMaterialNo(item.getMatnr())
|
||||
.setContent(qr.getCodeId())
|
||||
.setBatchNo(qrCodeMaster.getBatchNo())
|
||||
.setSerialNo(qrCodeMaster.getSerialNo())
|
||||
.setUniqNo(qrCodeMaster.getBarcodeCode())
|
||||
.setQiTao(false)
|
||||
.setFactoryNo(qrCodeMaster.getFactoryCode())
|
||||
.setWarehouseNo(qrCodeMaster.getStorageLocation())
|
||||
.setUnit(qrCodeMaster.getUnit())
|
||||
.setRspos(item.getRspos())
|
||||
.setNum(qrCodeMaster.getQuantity())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
throw new NflgException(STATE.BusinessError, e.getMessage());
|
||||
} finally {
|
||||
|
|
@ -1357,6 +1390,7 @@ public class NormalPGIController extends BaseController {
|
|||
outProduceService.saveBatch(pOrders);
|
||||
outProduceTicketService.saveBatch(tickets);
|
||||
outProduceTicketItemService.saveBatch(ticketItems);
|
||||
outMaterialScanRecordRespository.saveAll(records);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue