Merge branch 'develop' into dev_zhangke

This commit is contained in:
zhangke 2025-08-26 11:15:14 +08:00
commit 21fb7417f6
35 changed files with 439 additions and 176 deletions

View File

@ -180,7 +180,7 @@ public class InCostCenterBackController extends BaseController {
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody OutProduceSubmitQO request) {
WmsInCostcenterBack order = inCostcenterBackService.getById(request.getId());
WmsInCostcenterBack order = inCostcenterBackService.lambdaQuery().eq(WmsInCostcenterBack::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()
.setNo(NoUtil.getOutProduceTicketNo())

View File

@ -170,7 +170,7 @@ public class InProduceBackController extends BaseController {
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody OutProduceSubmitQO request) {
WmsInProduceBack order = inProduceBackService.getById(request.getId());
WmsInProduceBack order = inProduceBackService.lambdaQuery().eq(WmsInProduceBack::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsInProduceBackTicket ticket = new WmsInProduceBackTicket()
.setNo(NoUtil.getOutProduceTicketNo())

View File

@ -147,9 +147,7 @@ public class InPurchaseController extends BaseController {
*/
@GetMapping("pda/getInfo")
public ApiResult<OutProduce1VO> getInfo(@Valid @RequestParam @NotNull String no) {
WmsInPurchase order = inPurchaseService.lambdaQuery()
.eq(WmsInPurchase::getNo, no)
.one();
WmsInPurchase order = inPurchaseService.lambdaQuery().eq(WmsInPurchase::getNo, no).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("退库单不存在");
List<WmsInPurchaseItem> datas = inPurchaseItemService.getList(order.getId());
return ApiResult.success(new OutProduce1VO()
@ -174,7 +172,7 @@ public class InPurchaseController extends BaseController {
@Transactional
@GetMapping("pda/submitForIn")
public ApiResult<Void> submitForIn(@Valid @RequestBody OutProduceSubmitQO request) {
WmsInPurchase order = inPurchaseService.getById(request.getId());
WmsInPurchase order = inPurchaseService.lambdaQuery().eq(WmsInPurchase::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("退库单不存在");
List<WmsInPurchaseItem> datas = inPurchaseItemService.getList(order.getId());
List<InMaterialScanRecord> records = new ArrayList<>();

View File

@ -101,6 +101,7 @@ public class InventoryController extends BaseController {
.setId(Objects.isNull(item) ? null : item.getId())
.setTaskId(id)
.setFactoryNo(warehouseVO.getFactoryName())
.setWarehouseId(warehouseVO.getId())
.setWarehouseNo(warehouseVO.getNo())
.setWarehouseName(warehouseVO.getName())
.setChargeUserId(Objects.isNull(item) ? null : item.getChargeUserId())

View File

@ -184,7 +184,7 @@ public class OutAssistanceController extends BaseController {
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody OutProduceSubmitQO request) {
WmsOutAssistance order = outAssistanceService.getById(request.getId());
WmsOutAssistance order = outAssistanceService.lambdaQuery().eq(WmsOutAssistance::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsOutAssistanceTicket ticket = new WmsOutAssistanceTicket()
.setId(IdUtil.getSnowflakeNextId())

View File

@ -180,7 +180,7 @@ public class OutCostCenterController extends BaseController {
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody OutProduceSubmitQO request) {
WmsOutCostcenter order = outCostcenterService.getById(request.getId());
WmsOutCostcenter order = outCostcenterService.lambdaQuery().eq(WmsOutCostcenter::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsOutCostcenterTicket ticket = new WmsOutCostcenterTicket()
.setId(IdUtil.getSnowflakeNextId())

View File

@ -287,7 +287,7 @@ public class OutProduceController extends BaseController {
@Transactional
@PostMapping("pda/submit")
public ApiResult<Void> submit(@Valid @RequestBody OutProduceSubmitQO request) {
WmsOutProduce order = outProduceService.getById(request.getId());
WmsOutProduce order = outProduceService.lambdaQuery().eq(WmsOutProduce::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
WmsOutProduceTicket ticket = new WmsOutProduceTicket()
.setNo(NoUtil.getOutProduceTicketNo())

View File

@ -135,9 +135,6 @@ public class StructuralPackageOrderController extends BaseController {
@Resource
private IWmsBinService wmsBinService;
@Resource
private IWmsSrmQualityInspectionService srmQualityInspectionService;
@Resource
private BinService binService;
@ -226,6 +223,13 @@ public class StructuralPackageOrderController extends BaseController {
@Transactional
@PostMapping("save")
public ApiResult<Void> save(@Valid @RequestBody PackageDeliverOrderSaveQO request) {
VUtil.trueThrowBusinessError(request.getItems()
.stream()
.collect(Collectors.groupingBy(PackageDeliverOrderSaveItemQO::getKey1))
.values()
.stream()
.anyMatch(it -> it.size() > 1)
).throwMessage("同一个采购单号下的相同物料不能重复配置");
String orderNo;
List<Long> ids = request.getItems().stream().map(PackageDeliverOrderSaveItemQO::getId).filter(Objects::nonNull).toList();
if (CollectionUtil.isNotEmpty(ids)) {

View File

@ -3,6 +3,7 @@ package com.nflg.wms.admin.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
@ -34,6 +35,7 @@ import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
@ -152,23 +154,26 @@ public class TransferCompanyController extends BaseController {
}
/**
* 获取出库PDA使用
* 获取转储PDA使用
*/
@GetMapping("pda/getInfoForOut")
public ApiResult<OutProduce1VO> getInfoForOut(@Valid @RequestParam @NotNull String no) {
public ApiResult<TransferCompanyPdaVO> getInfoForOut(@Valid @RequestParam @NotNull String no) {
WmsTransferCompany order = transferCompanyService.lambdaQuery().eq(WmsTransferCompany::getNo, no).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("单不存在");
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("转储单不存在");
List<WmsTransferCompanyItem> datas = transferCompanyItemService.getList(order.getId());
return ApiResult.success(new OutProduce1VO()
.setId(order.getId())
.setAufnr("")
.setRsnum("")
return ApiResult.success(new TransferCompanyPdaVO()
.setBukrs(order.getBukrs())
.setReswk(order.getReswk())
.setLgfsb1(order.getLgfsb1())
.setBukrs1(order.getBukrs1())
.setWerks(order.getWerks())
.setLgort(order.getLgort())
.setItems(datas.stream()
.map(item -> new OutProduceItemVO()
.setLgort2(order.getLgort())
.setLgpbe(item.getLgpbe())
.setMaktx2(item.getMaktx())
.map(item -> new TransferCompanyPdaItemVO()
.setEbelp(item.getEbelp())
.setEbeln(order.getEbeln())
.setMatnr(item.getMatnr())
.setMaktx(item.getMaktx())
.setNum(item.getLeft())
).toList()
)
@ -181,8 +186,8 @@ public class TransferCompanyController extends BaseController {
@Transactional
@PostMapping("pda/submitForOut")
public ApiResult<Void> submitForOut(@Valid @RequestBody OutProduceSubmitQO request) {
WmsTransferCompany order = transferCompanyService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("单不存在");
WmsTransferCompany order = transferCompanyService.lambdaQuery().eq(WmsTransferCompany::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("转储单不存在");
List<WmsTransferCompanyItem> datas = transferCompanyItemService.getList(order.getId());
List<OutMaterialScanRecord> records = new ArrayList<>();
List<WmsTransferCompanyTicketItem> ticketItems = new ArrayList<>();
@ -196,14 +201,14 @@ public class TransferCompanyController extends BaseController {
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
String materialNo = qrCodeContent.getMaterialNo();
WmsTransferCompanyItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要领料");
BigDecimal num = item.getLeft();
VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0)
.throwMessage("物料" + materialNo + "的领取数量超出申请限制");
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要出库");
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的出库数量超出申请限制");
records.add(new OutMaterialScanRecord()
.setSource(5)
.setSourceId(order.getId())
.setSourceItemId(item.getId())
.setTicketId(ticket.getId())
.setMaterialNo(materialNo)
.setUnit(item.getMeins())
.setContent(qrCode)
@ -231,7 +236,16 @@ public class TransferCompanyController extends BaseController {
return ti;
});
pti.setNum(pti.getNum().add(qrCodeContent.getNum()));
item.setLeft(item.getLeft().subtract(qrCodeContent.getNum()));
});
transferCompanyItemService.updateBatchById(datas);
transferCompanyService.lambdaUpdate()
.set(WmsTransferCompany::getUpdateBy, UserUtil.getUserName())
.set(WmsTransferCompany::getUpdateTime, LocalDateTime.now())
.eq(WmsTransferCompany::getId, order.getId())
.update();
transferCompanyTicketItemService.saveBatch(ticketItems);
outMaterialScanRecordRespository.saveAll(records);
ZWM00_MB116VO vo = sapService.zwm00_mb116(new ZWM00_MB116QO()
.setEbeln("")
.setUsnam(UserUtil.getUserName())
@ -260,41 +274,33 @@ public class TransferCompanyController extends BaseController {
ticket.setDocYear(vo.getMjahr());
ticket.setMatDoc(vo.getMblnr());
transferCompanyTicketService.save(ticket);
transferCompanyItemService.updateBatchById(datas);
outMaterialScanRecordRespository.saveAll(records);
transferCompanyService.lambdaUpdate()
.set(WmsTransferCompany::getUpdateBy, UserUtil.getUserName())
.set(WmsTransferCompany::getUpdateTime, LocalDateTime.now())
.eq(WmsTransferCompany::getId, order.getId())
.update();
transferCompanyTicketItemService.saveBatch(ticketItems);
return ApiResult.success();
}
/**
* 获取入库单PDA使用
* 查询出库单信息PDA使用
* @param no 出库单单号
*/
@GetMapping("pda/getInfoForIn")
public ApiResult<OutProduce1VO> getInfoForIn(@Valid @RequestParam @NotNull String no) {
WmsTransferCompanyTicket ticket = transferCompanyTicketService.lambdaQuery()
.eq(WmsTransferCompanyTicket::getState, 0)
.eq(WmsTransferCompanyTicket::getNo, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("入库单不存在");
WmsTransferCompany order = transferCompanyService.getById(ticket.getOrderId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("转储单不存在");
List<TransferCompanyItemVO> datas = transferCompanyTicketItemService.getList(order.getId());
return ApiResult.success(new OutProduce1VO()
.setId(order.getId())
.setAufnr("")
.setRsnum("")
public ApiResult<TransferCompanyPdaVO> getInfoForIn(@Valid @RequestParam @NotNull String no) {
TransferCompanyTicketVO ticket = transferCompanyTicketService.getByNo(no);
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("出库单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getState(), 0)).throwMessage("出库单无效");
List<TransferCompanyItemVO> datas = transferCompanyTicketItemService.getList(ticket.getId());
return ApiResult.success(new TransferCompanyPdaVO()
.setBukrs(ticket.getBukrs())
.setReswk(ticket.getReswk())
.setLgfsb1(ticket.getLgfsb1())
.setBukrs1(ticket.getBukrs1())
.setWerks(ticket.getWerks())
.setLgort(ticket.getLgort())
.setItems(datas.stream()
.map(item -> new OutProduceItemVO()
.setLgort2(order.getLgort())
.setLgpbe(item.getLgobe())
.setMaktx2(item.getMaktx())
.map(item -> new TransferCompanyPdaItemVO()
.setEbelp(item.getEbelp())
.setEbeln(ticket.getEbeln())
.setMatnr(item.getMatnr())
.setNum(item.getSqsl())
.setMaktx(item.getMaktx())
.setNum(item.getLeft())
).toList()
)
);
@ -305,16 +311,14 @@ public class TransferCompanyController extends BaseController {
*/
@Transactional
@GetMapping("pda/submitForIn")
public ApiResult<Void> submitForIn(@Valid @RequestParam @NotNull Long id) {
WmsTransferCompanyTicket ticket = transferCompanyTicketService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("入库单不存在");
WmsTransferCompany order = transferCompanyService.getById(ticket.getOrderId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("转储单不存在");
List<TransferCompanyItemVO> datas = transferCompanyTicketItemService.getList(ticket.getId());
List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findBySourceId(ticket.getOrderId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("未找到出库扫码记录");
sapService.zwm3a17(new ZWM3A17DTO()
.setEbeln("")
public ApiResult<Void> submitForIn(@Valid @RequestParam @NotBlank String no) {
TransferCompanyTicketVO ticket = transferCompanyTicketService.getByNo(no);
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("出库单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getState(), 0)).throwMessage("出库单无效");
List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(records)).throwMessage("未找到出库扫码记录");
Pair<Pair<String, String>, Pair<String, String>> vos = sapService.zwm3a17(new ZWM3A17DTO()
.setEbeln(ticket.getEbeln())
.setUsnam(UserUtil.getUserName())
.setItem1(records.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey4))
.values()
@ -322,9 +326,9 @@ public class TransferCompanyController extends BaseController {
.map(ls -> new ZWM3A17Item1DTO()
.setMATNR(ls.get(0).getMaterialNo())
.setCHARG(ls.get(0).getBatchNo())
.setLGORT(order.getLgort())
.setLGORT(ticket.getLgort())
.setERFMG(ls.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
.setWERKS(order.getWerks())
.setWERKS(ticket.getWerks())
.setEBELP(ls.get(0).getEbelp())
.setMEINS(ls.get(0).getUnit())
).toList()
@ -340,8 +344,14 @@ public class TransferCompanyController extends BaseController {
.toList()
)
);
ticket.setState(1);
transferCompanyTicketService.save(ticket);
transferCompanyTicketService.lambdaUpdate()
.set(WmsTransferCompanyTicket::getMatDoc, vos.getKey().getKey())
.set(WmsTransferCompanyTicket::getDocYear, vos.getKey().getValue())
.set(WmsTransferCompanyTicket::getUpdateBy, UserUtil.getUserName())
.set(WmsTransferCompanyTicket::getUpdateTime, LocalDateTime.now())
.set(WmsTransferCompanyTicket::getState, 1)
.eq(WmsTransferCompanyTicket::getId, ticket.getId())
.update();
return ApiResult.success();
}

View File

@ -32,6 +32,7 @@ import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
@ -73,6 +74,9 @@ public class TransferFactoryController extends BaseController {
@Resource
private IWmsTransferFactoryTicketItemService transferFactoryTicketItemService;
@Resource
private IWmsStorageService storageService;
/**
* 查询SAP领料订单数据
*/
@ -109,6 +113,7 @@ public class TransferFactoryController extends BaseController {
.throwMessage("物料" + item.getMatnr() + "的申请数量超出库存限制");
WmsTransferFactoryItem data = Convert.convert(WmsTransferFactoryItem.class, item);
data.setOrderId(order.getId());
data.setLeft(data.getNum());
transferFactoryItemService.save(data);
});
});
@ -137,6 +142,17 @@ public class TransferFactoryController extends BaseController {
return ApiResult.success();
}
/**
* 删除
*/
@PostMapping("delete")
public ApiResult<Void> delete(@Valid @RequestParam @NotNull Long id) {
VUtil.trueThrowBusinessError(transferFactoryTicketService.lambdaQuery().eq(WmsTransferFactoryTicket::getOrderId, id).exists())
.throwMessage("已生成出库单,禁止删除!");
transferFactoryService.removeById(id);
return ApiResult.success();
}
/**
* 获取订单详情
*/
@ -150,24 +166,26 @@ public class TransferFactoryController extends BaseController {
}
/**
* 获取出库PDA使用
* 获取调拨PDA使用
*/
@GetMapping("pda/getInfoForOut")
public ApiResult<OutProduce1VO> getInfoForOut(@Valid @RequestParam @NotNull String no) {
WmsTransferFactory order = transferFactoryService.lambdaQuery().eq(WmsTransferFactory::getState, 0).eq(WmsTransferFactory::getNo, no).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在或已出库");
public ApiResult<TransferFactoryPdaVO> getInfoForOut(@Valid @RequestParam @NotNull String no) {
WmsTransferFactory order = transferFactoryService.lambdaQuery().eq(WmsTransferFactory::getNo, no).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("调拨单不存在");
List<WmsTransferFactoryItem> datas = transferFactoryItemService.getList(order.getId());
return ApiResult.success(new OutProduce1VO()
.setId(order.getId())
.setAufnr(order.getMblnr())
return ApiResult.success(new TransferFactoryPdaVO()
.setRsnum(order.getRsnum())
.setMblnr(order.getMblnr())
.setBwart(order.getBwart())
.setItems(datas.stream()
.map(item -> new OutProduceItemVO()
.setLgort2(order.getLgort())
.setLgpbe(item.getLgpbe())
.setMaktx2(item.getMaktx())
.map(item -> new TransferFactoryPdaItemVO()
.setMatnr(item.getMatnr())
.setNum(item.getNum())
.setMaktx(item.getMaktx())
.setUmlgo(order.getUmlgo())
.setLgort(order.getLgort())
.setNum(item.getLeft())
.setBinIn(storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getUmlgo()))
.setBinOut(storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getLgort()))
).toList()
)
);
@ -179,22 +197,43 @@ public class TransferFactoryController extends BaseController {
@Transactional
@PostMapping("pda/submitForOut")
public ApiResult<Void> submitForOut(@Valid @RequestBody OutProduceSubmitQO request) {
WmsTransferFactory order = transferFactoryService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("单不存在");
WmsTransferFactory order = transferFactoryService.lambdaQuery().eq(WmsTransferFactory::getNo, request.getNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("调拨单不存在");
List<WmsTransferFactoryItem> datas = transferFactoryItemService.getList(order.getId());
List<OutMaterialScanRecord> records = new ArrayList<>();
WmsTransferFactoryTicket ticket = new WmsTransferFactoryTicket()
.setId(IdUtil.getSnowflakeNextId())
.setNo(NoUtil.getTransferFactoryTicketNo())
.setOrderId(order.getId())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
transferFactoryTicketService.save(ticket);
List<WmsTransferFactoryTicketItem> ticketItems = new ArrayList<>();
request.getQrCodes().forEach(qrCode -> {
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
String materialNo = qrCodeContent.getMaterialNo();
WmsTransferFactoryItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要领料");
BigDecimal num = item.getNum();
VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0)
.throwMessage("物料" + materialNo + "的领取数量超出申请限制");
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要出库");
WmsTransferFactoryTicketItem pti = ticketItems.stream()
.filter(ti -> Objects.equals(ti.getOrderItemId(), item.getId()))
.findFirst()
.orElseGet(() -> {
WmsTransferFactoryTicketItem ti = new WmsTransferFactoryTicketItem()
.setTicketId(ticket.getId())
.setOrderItemId(item.getId())
.setNum(BigDecimal.ZERO);
ticketItems.add(ti);
return ti;
});
pti.setNum(pti.getNum().add(qrCodeContent.getNum()));
item.setLeft(item.getLeft().subtract(qrCodeContent.getNum()));
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的出库数量超出申请限制");
records.add(new OutMaterialScanRecord()
.setSource(4)
.setSourceId(order.getId())
.setSourceItemId(item.getId())
.setTicketId(ticket.getId())
.setMaterialNo(materialNo)
.setUnit(item.getMeins())
.setContent(qrCode)
@ -208,20 +247,10 @@ public class TransferFactoryController extends BaseController {
.setCreateTime(Instant.now())
);
});
List<String> materialNos = datas.stream()
.filter(it -> it.getNum().compareTo(records
.stream()
.filter(record -> StrUtil.equals(record.getMaterialNo(), it.getMatnr()))
.map(OutMaterialScanRecord::getNum)
.reduce(BigDecimal.ZERO, BigDecimal::add)) != 0
)
.map(WmsTransferFactoryItem::getMatnr)
.toList();
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(materialNos)).throwMessage("以下物料的数量与调拨数量不一致:" + StrUtil.join(",", materialNos));
transferFactoryTicketItemService.saveBatch(ticketItems);
transferFactoryItemService.updateBatchById(datas);
outMaterialScanRecordRespository.saveAll(records);
transferFactoryService.lambdaUpdate()
.set(WmsTransferFactory::getState, 1)
.set(WmsTransferFactory::getUpdateBy, UserUtil.getUserName())
.set(WmsTransferFactory::getUpdateTime, LocalDateTime.now())
.eq(WmsTransferFactory::getId, order.getId())
@ -230,61 +259,41 @@ public class TransferFactoryController extends BaseController {
}
/**
* 获取入库单PDA使用
* 查询出库单信息PDA使用
* @param no 出库单单号
*/
@GetMapping("pda/getInfoForIn")
public ApiResult<OutProduce1VO> getInfoForIn(@Valid @RequestParam @NotNull String no) {
WmsTransferFactory order = transferFactoryService.lambdaQuery().eq(WmsTransferFactory::getState, 1).eq(WmsTransferFactory::getNo, no).one();
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在或已入库");
List<WmsTransferFactoryItem> datas = transferFactoryItemService.getList(order.getId());
return ApiResult.success(new OutProduce1VO()
.setId(order.getId())
.setAufnr(order.getMblnr())
.setRsnum(order.getRsnum())
.setItems(datas.stream()
.map(item -> new OutProduceItemVO()
.setLgort2(order.getLgort())
.setLgpbe(item.getLgpbe())
.setMaktx2(item.getMaktx())
.setMatnr(item.getMatnr())
.setNum(item.getNum())
).toList()
)
public ApiResult<TransferFactoryPdaVO> getInfoForIn(@Valid @RequestParam @NotBlank String no) {
TransferFactoryTicketInfoVO ticket = transferFactoryTicketService.getByNo(no);
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("出库单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getState(), 0)).throwMessage("出库单无效");
List<TransferFactoryItemVO> itemVOS = transferFactoryTicketItemService.getList(ticket.getId());
return ApiResult.success(new TransferFactoryPdaVO()
.setBwart(ticket.getBwart())
.setRsnum(ticket.getRsnum())
.setMblnr(ticket.getMblnr())
.setItems(itemVOS.stream().map(it -> new TransferFactoryPdaItemVO()
.setMatnr(it.getMatnr())
.setMaktx(it.getMaktx())
.setLgort(ticket.getLgort())
.setUmlgo(ticket.getUmlgo())
.setNum(it.getNum())
.setBinIn(storageService.getBinNos(it.getMatnr(), ticket.getWerks(), ticket.getUmlgo()))
.setBinOut(storageService.getBinNos(it.getMatnr(), ticket.getWerks(), ticket.getLgort()))).toList())
);
}
/**
* 入库PDA使用
* @param no 出库单单号
*/
@Transactional
@PostMapping("pda/submitForIn")
public ApiResult<Void> submitForIn(@Valid @RequestParam @NotNull Long id) {
WmsTransferFactory order = transferFactoryService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findBySourceId(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(records)).throwMessage("未找到出库扫码记录");
WmsTransferFactoryTicket ticket = new WmsTransferFactoryTicket()
.setId(IdUtil.getSnowflakeNextId())
.setNo(NoUtil.getTransferFactoryTicketNo())
.setOrderId(order.getId())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
List<WmsTransferFactoryTicketItem> ticketItems = new ArrayList<>();
records.forEach(record -> {
WmsTransferFactoryTicketItem pti = ticketItems.stream()
.filter(ti -> Objects.equals(ti.getOrderItemId(), record.getSourceItemId()))
.findFirst()
.orElseGet(() -> {
WmsTransferFactoryTicketItem ti = new WmsTransferFactoryTicketItem()
.setTicketId(ticket.getId())
.setOrderItemId(record.getSourceItemId())
.setNum(BigDecimal.ZERO);
ticketItems.add(ti);
return ti;
});
pti.setNum(pti.getNum().add(record.getNum()));
});
transferFactoryTicketItemService.saveBatch(ticketItems);
public ApiResult<Void> submitForIn(@Valid @RequestParam @NotBlank String no) {
TransferFactoryTicketInfoVO ticket = transferFactoryTicketService.getByNo(no);
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("出库单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getState(), 0)).throwMessage("出库单无效");
List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values()
@ -292,8 +301,8 @@ public class TransferFactoryController extends BaseController {
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(order.getLgort())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(ticket.getLgort())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
@ -304,22 +313,22 @@ public class TransferFactoryController extends BaseController {
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(order.getUmlgo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(ticket.getUmlgo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
ZWM00MB113DTO vo = sapService.zwm00_mb113(new ZWM00MB113QO()
.setIRsnum(order.getRsnum())
.setIUmlgo(order.getUmlgo())
.setIRsnum(ticket.getRsnum())
.setIUmlgo(ticket.getUmlgo())
.setT_list1(records.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values().stream().map(its -> new ZWM00MB113LIST1QO()
.setRspos(order.getRsnum())
.setRspos(ticket.getRsnum())
.setMatnr(its.get(0).getMaterialNo())
.setErfmg(its.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
.setMeins(its.get(0).getUnit())
.setWerks(order.getWerks())
.setLgort(order.getLgort())).toList()
.setWerks(ticket.getWerks())
.setLgort(ticket.getLgort())).toList()
)
.setT_list2(records.stream()
.filter(record -> StrUtil.isNotBlank(record.getKey1()))
@ -327,20 +336,19 @@ public class TransferFactoryController extends BaseController {
.values()
.stream()
.map(ls -> new ZWM00MB113LIST2QO()
.setRspos(order.getRsnum())
.setRspos(ticket.getRsnum())
.setSernr(ls.get(0).getSerialNo())
.setFlag("X")
)
.toList())
);
ticket.setMatDoc(vo.getEMblnr());
ticket.setDocYear(vo.getEMjahr());
transferFactoryTicketService.save(ticket);
transferFactoryService.lambdaUpdate()
.set(WmsTransferFactory::getState, 2)
.set(WmsTransferFactory::getSapStatus, true)
.set(WmsTransferFactory::getSapError, "")
.eq(WmsTransferFactory::getId, order.getId())
transferFactoryTicketService.lambdaUpdate()
.set(WmsTransferFactoryTicket::getMatDoc, vo.getEMblnr())
.set(WmsTransferFactoryTicket::getDocYear, vo.getEMjahr())
.set(WmsTransferFactoryTicket::getUpdateBy, UserUtil.getUserName())
.set(WmsTransferFactoryTicket::getUpdateTime, LocalDateTime.now())
.set(WmsTransferFactoryTicket::getState, 1)
.eq(WmsTransferFactoryTicket::getId, ticket.getId())
.update();
return ApiResult.success();
}

View File

@ -77,6 +77,11 @@ public class OutMaterialScanRecord {
*/
private Long sourceItemId;
/**
* 凭证ID
*/
private Long ticketId;
/**
* 采购凭证号
*/

View File

@ -9,5 +9,5 @@ import java.util.List;
@Repository
public interface OutMaterialScanRecordRespository extends MongoRepository<OutMaterialScanRecord, String> {
List<OutMaterialScanRecord> findBySourceId(Long sourceId);
List<OutMaterialScanRecord> findByTicketId(Long ticketId);
}

View File

@ -135,6 +135,6 @@ public class TransferOrderDTO {
private String key;
public String getKey() {
return werks + "|" + rsnum + "|" + bwart + "|" + mblnr + "|" + lgort + "|" + umlgo;
return werks + "|" + rsnum + "|" + bwart + "|" + mblnr + "|" + lgort + "|" + umlgo + "|" + bdter;
}
}

View File

@ -1,6 +1,5 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@Data
@ -9,12 +8,10 @@ public class BomSearchQO extends PageQO{
/**
* SAP料号
*/
@NotBlank
private String no;
/**
* 物料描述
*/
@NotBlank
private String describe;
}

View File

@ -1,7 +1,7 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@ -9,8 +9,8 @@ import java.util.List;
@Data
public class OutProduceSubmitQO {
@NotNull
private Long id;
@NotBlank
private String no;
/**
* 二维码列表

View File

@ -1,5 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@ -72,4 +73,11 @@ public class PackageDeliverOrderSaveItemQO {
*/
@NotBlank
private String unit;
@JsonIgnore
private String key1;
public String getKey1() {
return externalOrderNo + "|" + packageId;
}
}

View File

@ -44,6 +44,11 @@ public class InventoryCheckTaskItemVO {
*/
private String factoryNo;
/**
* 仓库id
*/
private Long warehouseId;
/**
* 仓库编号
*/

View File

@ -0,0 +1,36 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Data
@Accessors(chain = true)
public class TransferCompanyPdaItemVO {
/**
* 采购凭证号
*/
private String ebeln;
/**
* 采购凭证的项目编号
*/
private String ebelp;
/**
* 物料号
*/
private String matnr;
/**
* 物料描述
*/
private String maktx;
/**
* 数量
*/
private BigDecimal num;
}

View File

@ -0,0 +1,43 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class TransferCompanyPdaVO {
/**
* 转入工厂
*/
private String werks;
/**
* 转入公司
*/
private String bukrs;
/**
* 转出工厂
*/
private String reswk;
/**
* 转出公司
*/
private String bukrs1;
/**
* 转出库位
*/
private String lgfsb1;
/**
* 转入库位
*/
private String lgort;
private List<TransferCompanyPdaItemVO> items;
}

View File

@ -75,5 +75,10 @@ public class TransferCompanyTicketVO {
*/
private String docYear;
/**
* 状态0已出库1已入库
*/
private Integer state;
private List<TransferCompanyItemVO> items;
}

View File

@ -0,0 +1,47 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Set;
@Data
@Accessors(chain = true)
public class TransferFactoryPdaItemVO {
/**
* 物料号
*/
private String matnr;
/**
* 物料描述
*/
private String maktx;
/**
* 调出库位
*/
private String lgort;
/**
* 调入库位
*/
private String umlgo;
/**
* 调出储位
*/
private Set<String> binOut;
/**
* 调入储位
*/
private Set<String> binIn;
/**
* 数量
*/
private BigDecimal num;
}

View File

@ -0,0 +1,28 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class TransferFactoryPdaVO {
/**
* 预留/相关需求的编号
*/
private String rsnum;
/**
* 物料凭证编号
*/
private String mblnr;
/**
* 移动类型库存管理
*/
private String bwart;
private List<TransferFactoryPdaItemVO> items;
}

View File

@ -100,5 +100,10 @@ public class TransferFactoryTicketInfoVO {
*/
private String docYear;
/**
* 状态0已出库1已入库
*/
private Integer state;
private List<TransferFactoryItemVO> items;
}

View File

@ -64,4 +64,14 @@ public class WmsTransferCompanyTicket implements Serializable {
* 状态0已出库1已入库
*/
private Integer state;
/**
* 入库人
*/
private String updateBy;
/**
* 入库时间
*/
private LocalDateTime updateTime;
}

View File

@ -105,8 +105,8 @@ public class WmsTransferFactory implements Serializable {
*/
private String rsnum;
/**
* 状态0待出库1已出库2已入库
*/
private Integer state;
// /**
// * 状态0待出库1已出库2已入库
// */
// private Integer state;
}

View File

@ -119,4 +119,9 @@ public class WmsTransferFactoryItem implements Serializable {
* 调库数量
*/
private BigDecimal num;
/**
* 剩余数量
*/
private BigDecimal left;
}

View File

@ -59,4 +59,19 @@ public class WmsTransferFactoryTicket implements Serializable {
* 物料凭证年度
*/
private String docYear;
/**
* 状态0已出库1已入库
*/
private Integer state;
/**
* 入库人
*/
private String updateBy;
/**
* 入库时间
*/
private LocalDateTime updateTime;
}

View File

@ -19,4 +19,6 @@ public interface WmsTransferCompanyTicketMapper extends BaseMapper<WmsTransferCo
IPage<TransferCompanyTicketVO> search(TransferCompanySearchQO request, Page<?> objectPage);
TransferCompanyTicketVO getInfo(Long id);
TransferCompanyTicketVO getByNo(String no);
}

View File

@ -20,4 +20,6 @@ public interface WmsTransferFactoryTicketMapper extends BaseMapper<WmsTransferFa
IPage<TransferFactoryTicketVO> search(TransferFactorySearchQO request, Page<Object> objectPage);
TransferFactoryTicketInfoVO getInfo(Long id);
TransferFactoryTicketInfoVO getByNo(String no);
}

View File

@ -20,4 +20,6 @@ public interface IWmsTransferCompanyTicketService extends IService<WmsTransferCo
IPage<TransferCompanyTicketVO> search(@Valid TransferCompanySearchQO request);
TransferCompanyTicketVO getInfo(@Valid @NotNull Long id);
TransferCompanyTicketVO getByNo(String no);
}

View File

@ -7,6 +7,7 @@ import com.nflg.wms.common.pojo.vo.TransferFactoryTicketInfoVO;
import com.nflg.wms.common.pojo.vo.TransferFactoryTicketVO;
import com.nflg.wms.repository.entity.WmsTransferFactoryTicket;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
/**
@ -21,4 +22,6 @@ public interface IWmsTransferFactoryTicketService extends IService<WmsTransferFa
IPage<TransferFactoryTicketVO> search(@Valid TransferFactorySearchQO request);
TransferFactoryTicketInfoVO getInfo(@Valid @NotNull Long id);
TransferFactoryTicketInfoVO getByNo(@Valid @NotBlank String no);
}

View File

@ -29,4 +29,9 @@ public class WmsTransferCompanyTicketServiceImpl extends ServiceImpl<WmsTransfer
public TransferCompanyTicketVO getInfo(Long id) {
return baseMapper.getInfo(id);
}
@Override
public TransferCompanyTicketVO getByNo(String no) {
return baseMapper.getByNo(no);
}
}

View File

@ -30,4 +30,9 @@ public class WmsTransferFactoryTicketServiceImpl extends ServiceImpl<WmsTransfer
public TransferFactoryTicketInfoVO getInfo(Long id) {
return baseMapper.getInfo(id);
}
@Override
public TransferFactoryTicketInfoVO getByNo(String no) {
return baseMapper.getByNo(no);
}
}

View File

@ -38,9 +38,16 @@
</select>
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.TransferCompanyTicketVO">
select tct.id,tct.no as "ticket_no",tct.create_by,tct.create_time,tct.mat_doc,tct.doc_year,tct.*
select tct.id,tct.no as "ticket_no",tct.create_by,tct.create_time,tct.mat_doc,tct.doc_year,tct.state,tct.*
from wms_transfer_company tc
inner join wms_transfer_company_ticket tct on tc.id = tct.order_id
where tct.id=#{id}
</select>
<select id="getByNo" resultType="com.nflg.wms.common.pojo.vo.TransferCompanyTicketVO">
select tct.id,tct.no as "ticket_no",tct.create_by,tct.create_time,tct.mat_doc,tct.doc_year,tct.state,tct.*
from wms_transfer_company tc
inner join wms_transfer_company_ticket tct on tc.id = tct.order_id
where tct."no"=#{no}
</select>
</mapper>

View File

@ -32,9 +32,16 @@
</select>
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.TransferFactoryTicketInfoVO">
SELECT tft."id",tft."no" AS "ticket_no",tft.create_by,tft.create_time,tft.doc_year,tft.mat_doc,tf.*
SELECT tft."id",tft."no" AS "ticket_no",tft.create_by,tft.create_time,tft.doc_year,tft.mat_doc,tft.state,tf.*
FROM wms_transfer_factory_ticket tft
INNER JOIN wms_transfer_factory tf ON tft.order_id=tf."id"
WHERE tft."id"=#{id}
</select>
<select id="getByNo" resultType="com.nflg.wms.common.pojo.vo.TransferFactoryTicketInfoVO">
SELECT tft."id",tft."no" AS "ticket_no",tft.create_by,tft.create_time,tft.doc_year,tft.mat_doc,tft.state,tf.*
FROM wms_transfer_factory_ticket tft
INNER JOIN wms_transfer_factory tf ON tft.order_id=tf."id"
WHERE tft."no"=#{no}
</select>
</mapper>