|  |  |  | 
|---|
|  |  |  | package com.vincent.rsf.server.api.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.druid.sql.visitor.functions.If; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.vincent.rsf.framework.common.Cools; | 
|---|
|  |  |  | import com.vincent.rsf.framework.common.R; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.vincent.rsf.server.common.config.ConfigProperties; | 
|---|
|  |  |  | import com.vincent.rsf.server.common.enums.WarehouseAreaType; | 
|---|
|  |  |  | import com.vincent.rsf.server.common.security.JwtSubject; | 
|---|
|  |  |  | import com.vincent.rsf.server.common.utils.CommonUtil; | 
|---|
|  |  |  | import com.vincent.rsf.server.common.utils.JwtUtil; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.entity.*; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.mapper.*; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.AsnOrderItemLogService; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.AsnOrderLogService; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.WarehouseAreasService; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.constant.CodeRes; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.constant.SerialRuleCode; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.controller.param.LoginParam; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.controller.result.LoginResult; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.entity.Tenant; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.entity.User; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.entity.UserLogin; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.entity.*; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.mapper.FieldsMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.mapper.TenantMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.mapper.UserMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.service.FieldsItemService; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.service.FieldsService; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.service.UserLoginService; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.utils.SerialRuleUtils; | 
|---|
|  |  |  | import org.apache.tika.utils.StringUtils; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.context.annotation.Bean; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletRequest; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | private StockItemMapper stockItemMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private PurchaseItemMapper purchaseItemMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private FieldsMapper fieldsMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AsnOrderLogService asnOrderLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AsnOrderItemLogService asnOrderItemLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private FieldsItemService fieldsItemService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | if (StringUtils.isEmpty(barcode)) { | 
|---|
|  |  |  | return R.error("标签码不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getBarcode, barcode)); | 
|---|
|  |  |  | List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getBarcode, barcode)); | 
|---|
|  |  |  | if (Objects.isNull(asnOrderItem)) { | 
|---|
|  |  |  | throw new CoolException("单据明细不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Objects.isNull(params.getWhAreaId())) { | 
|---|
|  |  |  | throw new CoolException("库区标识不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getId, params.getWhAreaId())); | 
|---|
|  |  |  | if (Objects.isNull(areasItem)) { | 
|---|
|  |  |  | throw new CoolException("数据错误:当前库区不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //获取已启用的动态扩展字 | 
|---|
|  |  |  | List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ReceiptDetlsDto> receipts = params.getReceipts(); | 
|---|
|  |  |  | List<WarehouseAreasItem> allOrders =   new ArrayList<>(); | 
|---|
|  |  |  | List<WarehouseAreasItem> allOrders = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String asnCode = receipts.stream().findFirst().get().getAsnCode(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode)); | 
|---|
|  |  |  | if (Objects.isNull(asnOrder)) { | 
|---|
|  |  |  | throw new CoolException("数据错误:主单不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | asnOrder.setQty(receiptQty); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (asnOrderMapper.updateById(asnOrder) < 1) { | 
|---|
|  |  |  | throw new CoolException("已收货数量修改失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | receipts.forEach(dto -> { | 
|---|
|  |  |  | Matnr matnr = matnrMapper.selectById(dto.getMatnrId()); | 
|---|
|  |  |  | if (Objects.isNull(matnr)) { | 
|---|
|  |  |  | throw new CoolException("数据错误:当前物料不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (Objects.isNull(dto.getReceiptQty())) { | 
|---|
|  |  |  | throw new CoolException("收货数据不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (dto.getReceiptQty() < dto.getPurQty()) { | 
|---|
|  |  |  | throw new CoolException("收货数量不能大于采购数量!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() | 
|---|
|  |  |  | .eq(AsnOrderItem::getAsnCode, asnCode) | 
|---|
|  |  |  | .eq(AsnOrderItem::getMatnrId, dto.getMatnrId())); | 
|---|
|  |  |  | if (Objects.isNull(orderItem)) { | 
|---|
|  |  |  | throw new CoolException("通知单明细不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderItem.setQty(dto.getReceiptQty()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (asnOrderItemMapper.updateById(orderItem) < 1) { | 
|---|
|  |  |  | throw new CoolException("通知单明细数量修改失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WarehouseAreasItem item = new WarehouseAreasItem(); | 
|---|
|  |  |  | item.setBarcode(dto.getBarcode()) | 
|---|
|  |  |  | .setAreaName(areasItem.getName()) | 
|---|
|  |  |  | .setAreaId(areasItem.getId()) | 
|---|
|  |  |  | .setStockUnit(dto.getStockUnit()) | 
|---|
|  |  |  | .setBatch(SerialRuleUtils.generateRuleCode("sys_receipt_batch", dto)) | 
|---|
|  |  |  | .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto)) | 
|---|
|  |  |  | .setAnfme(dto.getReceiptQty()) | 
|---|
|  |  |  | .setSplrBtch(dto.getSplrBatch()) | 
|---|
|  |  |  | .setMatnrCode(matnr.getCode()) | 
|---|
|  |  |  | 
|---|
|  |  |  | .setShipperId(matnr.getShipperId()); | 
|---|
|  |  |  | //TODO 供应商标识未设置,标识由PO单供应商编码转换 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Objects.isNull(fields)) { | 
|---|
|  |  |  | if (!Objects.isNull(dto.getExtendFields())) { | 
|---|
|  |  |  | //获取16位uuid | 
|---|
|  |  |  | String uuid16 = CommonUtil.randomUUID16(); | 
|---|
|  |  |  | Map<String, Object> extendFields = dto.getExtendFields(); | 
|---|
|  |  |  | //字段集合申明 | 
|---|
|  |  |  | List<FieldsItem> fieldsItems = new ArrayList<>(); | 
|---|
|  |  |  | extendFields.keySet().forEach(key -> { | 
|---|
|  |  |  | fields.forEach(obj -> { | 
|---|
|  |  |  | //判断key值与fields表字段是否相同 | 
|---|
|  |  |  | if (obj.getFields().equals(key)) { | 
|---|
|  |  |  | FieldsItem fieldsItem = new FieldsItem(); | 
|---|
|  |  |  | fieldsItem.setMatnrId(matnr.getId()).setFieldsId(obj.getId()) | 
|---|
|  |  |  | .setShiperId(matnr.getShipperId()) | 
|---|
|  |  |  | .setValue(extendFields.get(key).toString()) | 
|---|
|  |  |  | .setUuid(uuid16); | 
|---|
|  |  |  | fieldsItems.add(fieldsItem); | 
|---|
|  |  |  | //唯一标识入库 | 
|---|
|  |  |  | item.setFieldsIndex(uuid16); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (!fieldsItemService.saveBatch(fieldsItems)) { | 
|---|
|  |  |  | throw new CoolException("扩展字段保存失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | allOrders.add(item); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("收货失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取采购数量 | 
|---|
|  |  |  | double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty)); | 
|---|
|  |  |  | //判断已收货数量是否小于等于采购数量 | 
|---|
|  |  |  | if (subtract.compareTo(new BigDecimal("0.0")) <= 0) { | 
|---|
|  |  |  | asnOrder.setRleStatus(Short.valueOf("1")); | 
|---|
|  |  |  | //日志表操作 | 
|---|
|  |  |  | operateOrderLogs(asnOrder); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok("操作成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author Ryan | 
|---|
|  |  |  | * @description 删除原主单及明细,加入历史档 | 
|---|
|  |  |  | * @param | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | * @time 2025/3/19 19:53 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void operateOrderLogs(AsnOrder asnOrder) { | 
|---|
|  |  |  | if (asnOrderMapper.deleteById(asnOrder.getId()) < 1) { | 
|---|
|  |  |  | throw new CoolException("原单据删除失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AsnOrderLog orderLog = new AsnOrderLog(); | 
|---|
|  |  |  | BeanUtils.copyProperties(asnOrder, orderLog); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!asnOrderLogService.save(orderLog)) { | 
|---|
|  |  |  | throw new CoolException("主单历史档添加失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<AsnOrderItemLog> logs = new ArrayList<>(); | 
|---|
|  |  |  | List<AsnOrderItem> items = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId())); | 
|---|
|  |  |  | items.forEach(item -> { | 
|---|
|  |  |  | AsnOrderItemLog itemLog = new AsnOrderItemLog(); | 
|---|
|  |  |  | BeanUtils.copyProperties(item, itemLog); | 
|---|
|  |  |  | logs.add(itemLog); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!asnOrderItemLogService.saveBatch(logs)) { | 
|---|
|  |  |  | throw new CoolException("通知单明细历史档保存失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (asnOrderItemMapper.delete(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId())) < 1) { | 
|---|
|  |  |  | throw new CoolException("原单据明细删除失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author Ryan | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Objects.isNull(params.getAsnCode())) { | 
|---|
|  |  |  | throw new CoolException("通知单不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() | 
|---|
|  |  |  | List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() | 
|---|
|  |  |  | .eq(AsnOrderItem::getAsnCode, params.getAsnCode()) | 
|---|
|  |  |  | .eq(!Objects.isNull(params.getBarcode()) ,AsnOrderItem::getBarcode, params.getBarcode())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取ReceiptDetlsDto | 
|---|
|  |  |  | * @author Ryan | 
|---|
|  |  |  | * @description 获取所有启用动态字段 | 
|---|
|  |  |  | * @param | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | * @time 2025/3/12 09:23 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private R getAsnOrderItem(AsnOrderItem asnOrderItem) { | 
|---|
|  |  |  | ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<Fields> getDynamicFields() { | 
|---|
|  |  |  | return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | detlsDto.setAsnCode(asnOrderItem.getAsnCode()) | 
|---|
|  |  |  | .setMatnk(asnOrderItem.getMatnk()) | 
|---|
|  |  |  | .setBarcode(asnOrderItem.getBarcode()) | 
|---|
|  |  |  | .setPoCode(asnOrderItem.getPoCode()) | 
|---|
|  |  |  | .setPurQty(asnOrderItem.getAnfme()) | 
|---|
|  |  |  | .setSplrBatch(asnOrderItem.getSplrBatch()); | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取ReceiptDetlsDtos | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private R getAsnOrderItem(List<AsnOrderItem> items) { | 
|---|
|  |  |  | List<ReceiptDetlsDto> detlsDtos = new ArrayList<>(); | 
|---|
|  |  |  | items.forEach(asnOrderItem -> { | 
|---|
|  |  |  | ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId()); | 
|---|
|  |  |  | if (Objects.isNull(matnr)) { | 
|---|
|  |  |  | throw new CoolException("数据错误:当前物料不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //SET 物料最大存放数量 | 
|---|
|  |  |  | detlsDto.setMaxQty(matnr.getMaxQty()) | 
|---|
|  |  |  | .setMatnrId(matnr.getId()) | 
|---|
|  |  |  | .setStockUnit(matnr.getStockUnit()); | 
|---|
|  |  |  | QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>() | 
|---|
|  |  |  | .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()).eq(QlyInspect::getPoItemId, asnOrderItem.getPoDetlId())); | 
|---|
|  |  |  | if (!Objects.isNull(inspect)) { | 
|---|
|  |  |  | //set 质检结果 | 
|---|
|  |  |  | detlsDto.setInspect(inspect.getStatus$()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //获取当前库存信息 | 
|---|
|  |  |  | StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>() | 
|---|
|  |  |  | .eq(StockItem::getAsnItemId, asnOrderItem.getId()) | 
|---|
|  |  |  | .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId())); | 
|---|
|  |  |  | //SET 当前库存数量 | 
|---|
|  |  |  | if (Objects.isNull(stockItem)) { | 
|---|
|  |  |  | detlsDto.setStockQty(0.0); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | detlsDto.setAsnCode(asnOrderItem.getAsnCode()) | 
|---|
|  |  |  | .setMaktx(asnOrderItem.getMaktx()) | 
|---|
|  |  |  | .setBarcode(asnOrderItem.getBarcode()) | 
|---|
|  |  |  | .setPoCode(asnOrderItem.getPoCode()) | 
|---|
|  |  |  | .setPurQty(asnOrderItem.getAnfme()) | 
|---|
|  |  |  | .setSplrBatch(asnOrderItem.getSplrBatch()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取采购单明细信息 | 
|---|
|  |  |  | PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); | 
|---|
|  |  |  | //SET 平台行号 | 
|---|
|  |  |  | detlsDto.setPlatformId(purchaseItem.getPlatItemId()); | 
|---|
|  |  |  | Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId()); | 
|---|
|  |  |  | if (Objects.isNull(matnr)) { | 
|---|
|  |  |  | throw new CoolException("数据错误:当前物料不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //SET 物料最大存放数量 | 
|---|
|  |  |  | detlsDto.setMaxQty(matnr.getMaxQty()) | 
|---|
|  |  |  | .setMatnrId(matnr.getId()) | 
|---|
|  |  |  | .setStockUnit(matnr.getStockUnit()); | 
|---|
|  |  |  | QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>() | 
|---|
|  |  |  | .eq(QlyInspect::getAsnItemId, asnOrderItem.getId())); | 
|---|
|  |  |  | if (!Objects.isNull(inspect)) { | 
|---|
|  |  |  | //set 质检结果 | 
|---|
|  |  |  | detlsDto.setInspect(inspect.getStatus$()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //获取当前库存信息 | 
|---|
|  |  |  | StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>() | 
|---|
|  |  |  | .eq(StockItem::getAsnItemId, asnOrderItem.getId()) | 
|---|
|  |  |  | .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId())); | 
|---|
|  |  |  | //SET 当前库存数量 | 
|---|
|  |  |  | if (Objects.isNull(stockItem)) { | 
|---|
|  |  |  | detlsDto.setStockQty(0.0); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(detlsDto); | 
|---|
|  |  |  | if (!Objects.isNull(asnOrderItem.getPoDetlId())) { | 
|---|
|  |  |  | //获取采购单明细信息 | 
|---|
|  |  |  | PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); | 
|---|
|  |  |  | if (Objects.isNull(purchaseItem)) { | 
|---|
|  |  |  | //SET 平台行号 | 
|---|
|  |  |  | detlsDto.setPlatformId(purchaseItem.getPlatItemId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | detlsDtos.add(detlsDto); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(detlsDtos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|