kcw-wx-java/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java

555 lines
25 KiB
Java
Raw Normal View History

2025-07-25 11:22:48 +08:00
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.youchain.businessdata.rest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.youchain.DuplicateSubmission.DuplicateSubmission;
import com.youchain.annotation.AnonymousAccess;
import com.youchain.annotation.Log;
import com.youchain.basicdata.domain.*;
import com.youchain.basicdata.repository.BigItemRepository;
import com.youchain.basicdata.repository.BomAccountRepository;
import com.youchain.basicdata.repository.StockRepository;
import com.youchain.basicdata.service.AreaService;
import com.youchain.basicdata.service.ItemService;
import com.youchain.basicdata.service.StockService;
import com.youchain.basicdata.service.PointService;
import com.youchain.basicdata.service.dto.AreaDto;
import com.youchain.basicdata.service.mapstruct.PointMapper;
import com.youchain.businessdata.inputJson.IRkConfirm;
import com.youchain.businessdata.inputJson.IRkInv;
import com.youchain.businessdata.inputJson.IRkPut;
import com.youchain.businessdata.domain.*;
2025-08-11 18:03:26 +08:00
import com.youchain.businessdata.inputJson.IScanPut;
2025-07-25 11:22:48 +08:00
import com.youchain.businessdata.inputJson.buttenJson.AsnDetailButton;
import com.youchain.businessdata.repository.AsnDetailRepository;
import com.youchain.businessdata.repository.InventoryRepository;
import com.youchain.businessdata.repository.XppRecordRepository;
import com.youchain.businessdata.returnJson.RRkXpp;
import com.youchain.businessdata.service.*;
import com.youchain.businessdata.service.dto.*;
import com.youchain.businessdata.service.impl.SparepartsServiceImpl;
import com.youchain.businessdata.service.mapstruct.AsnMapper;
import com.youchain.businessdata.service.mapstruct.InventoryMapper;
import com.youchain.config.FileProperties;
import com.youchain.exception.BadRequestException;
import com.youchain.exception.handler.ApiError;
import com.youchain.exception.handler.ApiResult;
import com.youchain.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.beans.Transient;
import java.io.IOException;
import java.sql.Timestamp;
import java.time.format.DateTimeFormatter;
import java.util.*;
import javax.servlet.http.HttpServletResponse;
import org.springframework.transaction.annotation.Transactional;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
/**
* @author hjl
* @website https://eladmin.vip
* @date 2023-08-14
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "asn_detail管理")
@Slf4j
@RequestMapping("/api/asnDetail")
public class AsnDetailController {
private final AsnDetailService asnDetailService;
private final ItemService itemService;
private final TaskService taskService;
private final StockService stockService;
private final StockRepository stockRepository;
private final ItemKeyService itemKeyService;
private final InventoryService invService;
private final InventoryLogService invLogService;
private final PointService pointService;
private final AreaService areaService;
private final InventoryRepository inventoryRepository;
private final PointMapper pointMapper;
private final FileProperties properties;
private final AsnService asnService;
private final AsnDetailRepository asnDetailRepository;
private final AsnMapper asnMapper;
private final InventoryMapper inventoryMapper;
private final XppRecordRepository xppRecordRepository;
private final XppRecordService xppRecordService;
private final BigItemRepository bigItemRepository;
private final BomAccountRepository bomAccountRepository;
private final SparepartsServiceImpl sparepartsServiceImpl;
@Log("导出数据")
@ApiOperation("导出数据")
@GetMapping(value = "/download")
@AnonymousAccess
public void exportAsnDetail(HttpServletResponse response, AsnDetailQueryCriteria criteria) throws Exception {
asnDetailService.download(asnDetailService.queryAll(criteria), response);
}
@PostMapping("/getIdData")
@Log("根据id查询asn_detail")
@ApiOperation("根据id查询asn_detail")
@AnonymousAccess
public ResponseEntity<Object> getIdData(@RequestBody Long ids) {
return new ResponseEntity<>(asnDetailRepository.queryByAsnId(ids), HttpStatus.OK);
}
@GetMapping
@Log("查询asn_detail")
@ApiOperation("查询asn_detail")
@AnonymousAccess
public ResponseEntity<Object> queryAsnDetail(AsnDetailQueryCriteria criteria, Pageable pageable) {
return new ResponseEntity<>(asnDetailService.queryAll(criteria, pageable), HttpStatus.OK);
}
@GetMapping("/queryAsnDetailAll")
@Log("查询asn_detail全部数据")
@ApiOperation("查询asn_detail全部数据")
@AnonymousAccess
public ResponseEntity<Object> queryAsnDetailAll(AsnDetailQueryCriteria criteria) {
return new ResponseEntity<>(asnDetailService.queryAll(criteria), HttpStatus.OK);
}
@PostMapping
@Log("新增asn_detail")
@ApiOperation("新增asn_detail")
@PreAuthorize("@el.check('super:man')")
@Transactional
public ResponseEntity<Object> createAsnDetail(@Validated @RequestBody AsnDetail asnDetail) {
asnDetail.setStatus(BizStatus.OPEN);
asnDetail.setDept(UserUtils.getDept());
if (asnDetail.getRemark() == null && asnDetail.getAsn().getDescription() != null) {
asnDetail.setRemark(asnDetail.getAsn().getDescription());
}
asnDetailService.create(asnDetail);
// Stock stock=asnDetail.getStock();
// stock.setStatus(BaseStatus.USED);
// stockService.update(stock);
//orderQty
//添加订单数量
if (asnDetail.getOrderQty() != null && asnDetail.getOrderQty() != 0) {
Asn asn = asnDetail.getAsn();
asn.setOrderQuantity(asn.getOrderQuantity() + asnDetail.getOrderQty());
asnService.update(asn);
}
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
@Log("修改asn_detail")
@ApiOperation("修改asn_detail")
@PreAuthorize("@el.check('super:man')")
public ResponseEntity<Object> updateAsnDetail(@Validated @RequestBody AsnDetail resources) {
AsnDetailDto byId = asnDetailService.findById(resources.getId());
AsnDto byId1 = asnService.findById(resources.getAsn().getId());
byId1.setOrderQuantity((byId1.getOrderQuantity() - byId.getOrderQty()) + resources.getOrderQty());
asnDetailService.update(resources);
asnService.update(asnMapper.toEntity(byId1));
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除asn_detail")
@ApiOperation("删除asn_detail")
@PreAuthorize("@el.check('super:man')")
public ResponseEntity<Object> deleteAsnDetail(@RequestBody Long[] ids) {
asnDetailService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/putawayInvApp")
@Log("APP现品票上架-单个")
@ApiOperation("APP现品票上架-单个")
@AnonymousAccess
@Transactional
public ResponseEntity<Object> putawayInvApp(@RequestBody IRkPut s) {
String pointCode = s.getPointCode();
String ewm = s.getEwm();
int seq=s.getSeq();
XppRecord xppRecord =null;
Point point =null;
RRkXpp map = new RRkXpp();
AsnDetail d=null;
xppRecord = xppRecordRepository.findByCode(ewm);
if(xppRecord==null){
return new ResponseEntity<>(ewm + "未收货", BAD_REQUEST);
}
d=xppRecord.getAsnDetailId();
if(d.getReceivedQty()>0){
return new ResponseEntity<>(ewm + "已上架,不能重复上架", BAD_REQUEST);
}
2025-08-11 18:03:26 +08:00
if(seq==1){//扫描列表
2025-07-25 11:22:48 +08:00
Item it=d.getItem();
map.setItemCode(it.getCode());
map.setItemName(it.getName());
map.setAc(xppRecord.getAc());
map.setDdbh(xppRecord.getDdbh());
map.setNrs(xppRecord.getNrs());
map.setNrzsr(DateUtil.dateYmd(xppRecord.getNrDate()));
map.setFzh(xppRecord.getFzh());
map.setTjkw(it.getPoint()==null?null:it.getPoint().getCode());
return new ResponseEntity<>(map, HttpStatus.OK);
}
2025-08-11 18:03:26 +08:00
if (seq==2) {//列表提交上架
2025-07-25 11:22:48 +08:00
if(pointCode==null||!pointCode.equals("")){
Point dstPoint=d.getItem().getPoint();
if(dstPoint==null){
return new ResponseEntity<>(d.getItem().getCode() + "品番未维护库位", BAD_REQUEST);
}
point=dstPoint;
pointCode=dstPoint.getCode();
}else {
point = pointService.getPoint(pointCode, null, null, null);
if (point == null) {
return new ResponseEntity<>(pointCode + "库位不存在", BAD_REQUEST);
}
}
Area area=point.getArea();
2025-08-19 14:27:45 +08:00
asnDetailService.putawayInv(d.getId(),area.getId(),point.getId(),s.getQty(),ewm);
2025-07-25 11:22:48 +08:00
}
return new ResponseEntity<>("操作成功", HttpStatus.OK);
}
@PostMapping("/putawayXppApp")
@Log("扫描现品票上架APP")
@ApiOperation("扫描现品票上架APP")
@PreAuthorize("@el.check('super:man')")
@Transactional
@DuplicateSubmission
public ResponseEntity<Object> putawayXppApp(@RequestBody IRkPut s) {
int seq=s.getSeq();
if(seq==1){
2025-08-19 14:27:45 +08:00
RRkXpp map = xppRecordService.xppAnalysis(s.getEwm());
2025-07-25 11:22:48 +08:00
return new ResponseEntity<>(map, HttpStatus.OK);
}
if (seq==2) {
String pointCode = s.getPointCode();
if (pointCode == null||pointCode.equals("")) {
return new ResponseEntity<>( "库位不能为空", BAD_REQUEST);
}
Point point = pointService.getPoint(pointCode,null, null, null);
if (point == null) {
return new ResponseEntity<>(pointCode + "库位不存在", BAD_REQUEST);
}
Area area=point.getArea();
for(String ewm:s.getEwms()){
2025-08-19 14:27:45 +08:00
XppRecord xppRecord = xppRecordService.saveXppRecord(ewm);
AsnDetail asnDetail = xppRecordService.addAsnDetail(xppRecord);
asnDetailService.putawayInv(asnDetail.getId(),area.getId(),point.getId(),xppRecord.getNrs(),xppRecord.getEwm());
2025-07-25 11:22:48 +08:00
}
}
return new ResponseEntity<>("操作成功", HttpStatus.OK);
2025-08-11 18:03:26 +08:00
}
@PostMapping("/collectPutAway")
@Log("现品票采集上架")
@ApiOperation("现品票采集表")
@AnonymousAccess
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> collectPutAway(@RequestBody HashMap rk) {
XppRecord xppRecord = xppRecordService.saveXppRecord(rk.get("ewm").toString());
Long pointId=Long.parseLong(rk.get("pointId").toString());
AsnDetail asnDetail = xppRecordService.addAsnDetail(xppRecord);
Point point=pointService.findEntityById(pointId);
2025-08-19 14:27:45 +08:00
asnDetailService.putawayInv(asnDetail.getId(),point.getArea().getId(),pointId,xppRecord.getNrs(),xppRecord.getEwm());
2025-08-11 18:03:26 +08:00
return new ResponseEntity<>("操作成功", HttpStatus.OK);
2025-07-25 11:22:48 +08:00
}
@PostMapping("/putawayConfirmXpp")
@Log("现品票上架确认-系统")
@ApiOperation("现品票上架确认-系统")
@PreAuthorize("@el.check('super:man')")
@Transactional(rollbackFor = Exception.class)
@DuplicateSubmission
public ResponseEntity<Object> putawayConfirmXpp(@RequestBody HashMap rk) {
Long asnDetailId=Long.parseLong(rk.get("detailId").toString());
AsnDetailDto dto= asnDetailService.findById(asnDetailId);
Double recQty=dto.getOrderQty()-dto.getReceivedQty();
2025-08-19 14:27:45 +08:00
asnDetailService.putawayInv(asnDetailId, Long.parseLong(rk.get("areaId").toString())
2025-07-25 11:22:48 +08:00
, Long.parseLong(rk.get("pointId").toString()),recQty,null);
return new ResponseEntity<>("操作成功", HttpStatus.OK);
}
@Log("取消上架")
@ApiOperation("取消上架")
@PostMapping("/cancelPut")
@PreAuthorize("@el.check('super:man')")
@Transactional
public ResponseEntity<Object> cancelPut(@RequestBody Long[] ids) {
for (Long id:ids){
XppRecord xppRecord = xppRecordService.getEntity(id);
AsnDetail ad=xppRecord.getAsnDetailId();
if(ad==null){
return new ResponseEntity("找不到上架记录", BAD_REQUEST);
}
if (!xppRecord.getStatus().equals(BizStatus.PUTAWAY)) {
throw new BadRequestException("上架状态才能取消上架");
}
Task t=xppRecord.getRkTask();
// List<Task> ts=taskService.queryTask(ad.getId(),null,null,null);
// for(Task t:ts) {
asnDetailService.cancelPut(t.getId(), xppRecord);
// }
xppRecordRepository.delete(xppRecord);
}
return new ResponseEntity("取消成功", HttpStatus.OK);
}
@Log("取消收货的操作")
@ApiOperation("取消收货的操作")
@PostMapping("/rkAndQxButtonQX")
@PreAuthorize("@el.check('super:man')")
@Transactional
public ApiResult rkAndQxButtonQX(@RequestBody AsnDetailButton asnDetailButton) {
if (!asnDetailButton.getAsnDetailDataS().isEmpty()) {
for (AsnDetail ad : asnDetailButton.getAsnDetailDataS()) {
Asn asn = ad.getAsn();
if (Objects.isNull(asn)){
throw new BadRequestException(HttpStatus.NOT_FOUND, ad.getItem().getCode() + "没有主单(订单序号)");
}
AsnDto byId = asnMapper.toDto(asn);
//取消收货
//物料 点位 增加/减少 1
InventoryLogQueryCriteria inventoryLogQueryCriteria = new InventoryLogQueryCriteria();
inventoryLogQueryCriteria.setIncDec(1);
inventoryLogQueryCriteria.setItemCode(ad.getItem().getCode());
inventoryLogQueryCriteria.setSrcPointCode(ad.getPoint().getCode());
inventoryLogQueryCriteria.setAreaCode(byId.getArea().getCode());
List<InventoryLogDto> inventoryLogDtos = invLogService.queryAll(inventoryLogQueryCriteria);
if (inventoryLogDtos.isEmpty()) {
throw new BadRequestException(HttpStatus.NOT_FOUND, ad.getId() + "未发现库存日志");
}
//判断库存数量 是否大于取消的数量
// for (InventoryLogDto inve : inventoryLogDtos) {
InventoryLogDto inve = inventoryLogDtos.get(0);
//目标标点位
Point dstPoint = inve.getDstPoint();
//查库存
InventoryQueryCriteria inventoryQueryCriteria = new InventoryQueryCriteria();
inventoryQueryCriteria.setPointCode(dstPoint.getCode());
inventoryQueryCriteria.setItemKey(inve.getItemKey());
inventoryQueryCriteria.setAreaName(byId.getArea().getName());
List<InventoryDto> inventoryDtos = invService.queryAll(inventoryQueryCriteria);
if (!inventoryDtos.isEmpty()) {
InventoryDto inventoryDto = inventoryDtos.get(0);
double pd = inventoryDto.getQuantity()-ad.getReceivedQty();
if (pd>0){
inventoryDto.setQuantity((int)pd);
invService.update(inventoryMapper.toEntity(inventoryDto));
}else if (pd==0d){
inventoryRepository.deleteById(inventoryDto.getId());
}else {
throw new BadRequestException(HttpStatus.NOT_FOUND, ad.getItem().getCode()+"库存数量不满,无法取消");
}
//生成库存日志
InventoryLog inventoryLog = invLogService.storeInventoryLog(BizStatus.RECEIVING_CANCEL, BizStatus.REDUCE, null, ad.getPoint().getArea(), inve.getItemKey(),
pointMapper.toEntity(inventoryDto.getPoint()) , dstPoint, ad.getStock(), ad.getStock(), ad.getReceivedQty(), ad.getReceivedQty(), null,null,BizStatus.ASN, ad.getId(), inventoryDto.getId(), ad.getRemark());
}
// }
byId.setReceivedQuantity(byId.getReceivedQuantity()-ad.getReceivedQty());
ad.setReceivedQty(0d);
asnDetailService.update(ad);
asnService.update(asnMapper.toEntity(byId));
}
}
return ApiResult.result(200, "操作成功", HttpStatus.OK);
}
/**
*
*
* @param asnDetailButton
* @return
*/
@Log("整单入库、单一入库、取消收货的操作")
@ApiOperation("整单入库、单一入库、取消收货的操作")
@PostMapping("/rkAndQxButton")
@PreAuthorize("@el.check('super:man')")
@Transactional(rollbackFor = Exception.class)
public ApiResult rkAndQxButton(@RequestBody AsnDetailButton asnDetailButton) {
if (asnDetailButton.getButton() == 1) {
//整单入库
long asnId = asnDetailButton.getId();
AsnDto byId = asnService.findById(asnId);
if (Objects.isNull(byId)) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, asnId + "未查到该数据");
}
//库区的判断
AreaDto area = byId.getArea();
if (Objects.isNull(area)) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, asnId + "库区未填写");
}
//查询 那个明细需要确认
List<AsnDetail> asnDetails =asnDetailService.findAsnDetails(asnId,"1");
if (!asnDetails.isEmpty()) {
for (AsnDetail d : asnDetails) {
2025-08-19 14:27:45 +08:00
asnDetailService.putawayInv(d.getId(), byId.getArea().getId(), d.getPoint()==null?null:d.getPoint().getId(),(d.getOrderQty()-d.getReceivedQty()),null);
2025-07-25 11:22:48 +08:00
byId.setReceivedDate(new Timestamp(System.currentTimeMillis()));
byId.setReceivedQuantity(byId.getReceivedQuantity() + d.getOrderQty());
double pd = byId.getOrderQuantity() - byId.getReceivedQuantity();
if (pd == 0) {
byId.setStatus(BizStatus.RECEIVED);
} else if (pd > 0 && byId.getReceivedQuantity() > 0) {
byId.setStatus(BizStatus.RECEIVING);
}
asnService.update(asnMapper.toEntity(byId));
}
}
return ApiResult.result(200, "入库确认成功", HttpStatus.OK);
} else if (asnDetailButton.getButton() == 2) {
double qty=asnDetailButton.getOneRNumber();
long id = asnDetailButton.getId();
AsnDto byId = asnService.findById(id);
if (Objects.isNull(byId)) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "未查到该数据");
}
//库区的判断
AreaDto area = byId.getArea();
if (Objects.isNull(area)) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "库区未填写");
}
2025-08-19 14:27:45 +08:00
asnDetailService.putawayInv(id,area.getId(),asnDetailButton.getOneRPoint().getId(),qty,null);
2025-07-25 11:22:48 +08:00
} else if (asnDetailButton.getButton() == 3) {
long id = asnDetailButton.getId();
AsnDto byId = asnService.findById(id);
if (!asnDetailButton.getAsnDetailDataS().isEmpty()) {
for (AsnDetail ad : asnDetailButton.getAsnDetailDataS()) {
List<Task> ts=taskService.queryTask(ad.getId(),null,null,null,null);
for(Task t:ts) {
asnDetailService.cancelPut(t.getId(),null);
}
}
}
} else {
throw new BadRequestException(HttpStatus.NOT_FOUND, asnDetailButton.getButton() + "的操作码不对 1、整单入库,2、单一入库,3取消收货");
}
return ApiResult.result(200, "操作成功", HttpStatus.OK);
}
@Log("入库确认")
@ApiOperation("入库确认")
@PostMapping(value = "/invVerify")
@PreAuthorize("@el.check('super:man')")
@Transactional(rollbackFor = Exception.class)
public ApiResult invVerify(@RequestBody Long[] ids) {
for (Long id : ids) {
AsnDto byId = asnService.findById(id);
if (Objects.isNull(byId)) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "未查到该数据");
}
//库区的判断
AreaDto area = byId.getArea();
if (Objects.isNull(area)) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "库区未填写");
}
// if (!area.getBesh()){
// // 通用异常,使用自定义状态码
// throw new BadRequestException(HttpStatus.NOT_FOUND,id+"的库区的仓库不是接收仓库");
// }
//查询 那个明细需要确认
List<AsnDetail> asnDetails = asnDetailRepository.queryByAsnId(id);
if (!asnDetails.isEmpty()) {
for (AsnDetail asnDetailData : asnDetails) {
if (asnDetailData.getOrderQty() == asnDetailData.getReceivedQty()) {
continue;
}
//1.库区为接收仓库库位为每个detail上的库位如果没有则提示
//2.库区不为接收仓库库位取item上维护的库位如果没有则提示
if (area.getBexb()) {//判断库区是否为接受仓库
if (Objects.isNull(asnDetailData.getPoint())) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "是接受仓库 副表" + asnDetailData.getId() + "的库位未填写");
}
} else {
if (Objects.isNull(asnDetailData.getItem())) {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "是不是接受仓库 副表" + asnDetailData.getId() + "的物料未填写");
}
}
ApiResult apiResult = null;
if (Objects.isNull( asnDetailData.getPoint())){
// apiResult = this.putawayInv(asnDetailData.getId(), byId.getArea().getId(), null);
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, asnDetailData.getId() + "没有填写点位");
}else {
if (asnDetailData.getReceivedQty()>0){
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "的副表" + asnDetailData.getId() + "的物料已经单一入库无法使用整单入库");
}
2025-08-19 14:27:45 +08:00
asnDetailService.putawayInv(asnDetailData.getId(), byId.getArea().getId(), asnDetailData.getPoint().getId(),(asnDetailData.getOrderQty()-asnDetailData.getReceivedQty()),null);
2025-07-25 11:22:48 +08:00
}
if (apiResult.getStatus() == 200) {
//收货日期改成当前日期 数量累计
byId.setReceivedDate(new Timestamp(System.currentTimeMillis()));
byId.setReceivedQuantity(byId.getReceivedQuantity() + asnDetailData.getOrderQty());
} else {
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.NOT_FOUND, apiResult.getMessage());
}
double pd = byId.getOrderQuantity() - byId.getReceivedQuantity();
if (pd == 0) {
byId.setStatus(BizStatus.RECEIVED);
} else if (pd > 0 && byId.getReceivedQuantity() > 0) {
byId.setStatus(BizStatus.RECEIVING);
}
asnService.update(asnMapper.toEntity(byId));
}
}
}
return ApiResult.result(200, "入库确认成功", HttpStatus.OK);
}
}