| | |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.api.controller.params.CheckObjParams; |
| | | import com.vincent.rsf.server.api.controller.params.OtherReceiptParams; |
| | | import com.vincent.rsf.server.api.controller.params.ReceiptParams; |
| | | import com.vincent.rsf.server.api.entity.dto.CheckObjDto; |
| | | import com.vincent.rsf.server.api.entity.dto.InspectDetlDto; |
| | | import com.vincent.rsf.server.api.entity.dto.InspectItemDto; |
| | | import com.vincent.rsf.server.api.entity.dto.ReceiptDetlsDto; |
| | | import com.vincent.rsf.server.api.entity.enums.OrderWorkType; |
| | | import com.vincent.rsf.server.api.service.MobileService; |
| | | 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.controller.params.IsptItemsParams; |
| | | import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.mapper.*; |
| | | import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; |
| | | import com.vincent.rsf.server.manager.service.WarehouseAreasService; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | 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.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private WarehouseAreasService warehouseAreasService; |
| | | @Resource |
| | | private AsnOrderItemMapper asnOrderItemMapper; |
| | | @Resource |
| | | private AsnOrderMapper asnOrderMapper; |
| | | @Autowired |
| | | private AsnOrderService asnOrderMapper; |
| | | @Resource |
| | | private MatnrMapper matnrMapper; |
| | | @Resource |
| | | private QlyInspectMapper qlyInspectMapper; |
| | | @Autowired |
| | | private QlyIsptItemService qlyIsptItemService; |
| | | @Resource |
| | | private StockItemMapper stockItemMapper; |
| | | @Resource |
| | | private PurchaseItemMapper purchaseItemMapper; |
| | | @Resource |
| | | private FieldsMapper fieldsMapper; |
| | | @Autowired |
| | | private IsptHistoriesMapper isptHistoriesMapper; |
| | | |
| | | @Autowired |
| | | private AsnOrderLogService asnOrderLogService; |
| | | |
| | | @Autowired |
| | | private WaitPakinService waitPakinService; |
| | | |
| | | @Autowired |
| | | private WaitPakinItemService waitPakinItemService; |
| | | |
| | | @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::getTrackCode, barcode)); |
| | | if (Objects.isNull(asnOrderItem)) { |
| | | throw new CoolException("单据明细不存在!!"); |
| | | } |
| | |
| | | if (Objects.isNull(params.getWhAreaId())) { |
| | | throw new CoolException("库区标识不能为空!!"); |
| | | } |
| | | WarehouseAreasItem areasItem = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getAreaId, params.getWhAreaId())); |
| | | |
| | | 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.getOne(new LambdaQueryWrapper<AsnOrder>() |
| | | .eq(AsnOrder::getCode, asnCode)); |
| | | if (Objects.isNull(asnOrder)) { |
| | | throw new CoolException("数据错误:主单不存在!!"); |
| | | } |
| | | asnOrder.setQty(receiptQty); |
| | | |
| | | if (!asnOrderMapper.updateById(asnOrder)) { |
| | | 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().compareTo(dto.getAnfme()) > 0) { |
| | | 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("通知单明细不存在!!"); |
| | | } |
| | | if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) { |
| | | throw new CoolException("收货数量不能为零!!"); |
| | | } |
| | | orderItem.setQty(dto.getReceiptQty()) |
| | | .setProdTime(dto.getProdTime()); |
| | | |
| | | if (asnOrderItemMapper.updateById(orderItem) < 1) { |
| | | throw new CoolException("通知单明细数量修改失败!!"); |
| | | } |
| | | |
| | | WarehouseAreasItem item = new WarehouseAreasItem(); |
| | | // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | // String format = null; |
| | | // if (Objects.isNull(dto.getProdTime())) { |
| | | // format = dateFormat.format(dto.getProdTime()); |
| | | // } |
| | | item.setBarcode(dto.getBarcode()) |
| | | .setAreaName(areasItem.getAreaName()) |
| | | .setAreaId(areasItem.getAreaId()) |
| | | .setAreaName(areasItem.getName()) |
| | | .setAreaId(areasItem.getId()) |
| | | .setProdTime(dto.getProdTime()) |
| | | .setWeight(dto.getWeigth()) |
| | | .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.removeById(asnOrder.getId())) { |
| | | throw new CoolException("原单据删除失败!!"); |
| | | } |
| | | |
| | | AsnOrderLog orderLog = new AsnOrderLog(); |
| | | BeanUtils.copyProperties(asnOrder, orderLog); |
| | | orderLog.setAsnId(asnOrder.getId()); |
| | | |
| | | 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); |
| | | itemLog.setAsnItemId(itemLog.getId()) |
| | | .setAsnId(item.getAsnId()); |
| | | 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("通知单不能为空!!"); |
| | | } |
| | | if (Objects.isNull(params.getBarcode())) { |
| | | throw new CoolException("物料编码不能为空!!"); |
| | | } |
| | | |
| | | AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() |
| | | List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() |
| | | .eq(AsnOrderItem::getAsnCode, params.getAsnCode()) |
| | | .eq(AsnOrderItem::getBarcode, params.getBarcode())); |
| | | .eq(!Objects.isNull(params.getTrackCode()) ,AsnOrderItem::getTrackCode, params.getTrackCode())); |
| | | |
| | | if (Objects.isNull(asnOrderItem)) { |
| | | throw new CoolException("单据明细不存在!!"); |
| | |
| | | */ |
| | | @Override |
| | | public List<AsnOrder> getAllAsnOrders() { |
| | | List<AsnOrder> asnOrders = asnOrderMapper.selectList(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type)); |
| | | List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type)); |
| | | return asnOrders; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取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()); |
| | | @Override |
| | | public R getDeltByCode(String code) { |
| | | return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code))); |
| | | } |
| | | |
| | | Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId()); |
| | | if (Objects.isNull(matnr)) { |
| | | throw new CoolException("数据错误:当前物料不存在!!"); |
| | | /** |
| | | * @author Ryan |
| | | * @description PDA组拖 |
| | | * @param |
| | | * @return |
| | | * @time 2025/3/29 14:26 |
| | | */ |
| | | @Override |
| | | public WaitPakin mergeItems(WaitPakinParam waitPakin) { |
| | | return waitPakinService.mergeItems(waitPakin); |
| | | } |
| | | |
| | | @Override |
| | | public WaitPakin unBind(WaitPakinParam param) { |
| | | return waitPakinService.unBind(param); |
| | | } |
| | | |
| | | /** |
| | | * 报检功能 |
| | | * @param code |
| | | * @param loginUserId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R inspect(String code, Long loginUserId) { |
| | | AsnOrder asnOrders = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, code)); |
| | | if (Objects.isNull(asnOrders)) { |
| | | 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())); |
| | | //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); |
| | | InspectDetlDto detlDto = new InspectDetlDto(); |
| | | detlDto.setCode(asnOrders.getCode()).setId(asnOrders.getId()).setPoCode(asnOrders.getPoCode()); |
| | | List<AsnOrderItem> orderItems = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnCode, code)); |
| | | if (orderItems.isEmpty()) { |
| | | detlDto.setItems(new ArrayList<>()); |
| | | } else { |
| | | detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty()); |
| | | List<InspectItemDto> itemDtos = new ArrayList<>(); |
| | | orderItems.forEach(dto -> { |
| | | InspectItemDto itemDto = new InspectItemDto(); |
| | | if (!Objects.isNull(dto.getMatnrCode())) { |
| | | Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, dto.getMatnrCode())); |
| | | itemDto.setGroup(matnr.getGroupCode()); |
| | | } |
| | | itemDto.setMaktx(dto.getMaktx()) |
| | | .setMatnrCode(dto.getMatnrCode()) |
| | | .setPurUnit(dto.getPurUnit()) |
| | | .setSuplierCode(dto.getSplrCode()) |
| | | .setSuplierName(dto.getSplrName()) |
| | | .setPurQty(dto.getPurQty()); |
| | | itemDtos.add(itemDto); |
| | | }); |
| | | detlDto.setItems(itemDtos); |
| | | } |
| | | |
| | | //获取采购单明细信息 |
| | | PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId())); |
| | | //SET 平台行号 |
| | | detlsDto.setPlatformId(purchaseItem.getPlatItemId()); |
| | | List<IsptHistories> histories = isptHistoriesMapper.selectList(new LambdaQueryWrapper<IsptHistories>().eq(IsptHistories::getAsnId, asnOrders.getId())); |
| | | detlDto.setHistories(histories); |
| | | return R.ok(detlDto); |
| | | } |
| | | |
| | | return R.ok(detlsDto); |
| | | /** |
| | | * @author Ryan |
| | | * @description 提交报检 |
| | | * @param |
| | | * @return |
| | | * @time 2025/4/1 16:47 |
| | | */ |
| | | @Override |
| | | public R confirmIspt(String id) { |
| | | if (org.apache.commons.lang3.StringUtils.isBlank(id)) { |
| | | throw new CoolException("参数不能为空!!"); |
| | | } |
| | | AsnOrder asnOrder = asnOrderMapper.getById(id); |
| | | if (Objects.isNull(asnOrder)) { |
| | | throw new CoolException("单据不存在!!"); |
| | | } |
| | | List<AsnOrder> orders = new ArrayList<>(); |
| | | orders.add(asnOrder); |
| | | if (asnOrderMapper.notifyInspect(orders)) { |
| | | return R.ok("上报成功!!"); |
| | | }else { |
| | | return R.error("上报失败!!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 通过物料,质检单获取需要质检单据 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R checkObjs(CheckObjParams params) { |
| | | if (Objects.isNull(params.getIsptCode())) { |
| | | throw new CoolException("质检单不能为空"); |
| | | } |
| | | if (Objects.isNull(params.getMatnrCode())) { |
| | | throw new CoolException("物料编码不能为空!"); |
| | | } |
| | | QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode())); |
| | | if (Objects.isNull(inspect)) { |
| | | throw new CoolException("质检单据不存在!!"); |
| | | } |
| | | QlyIsptItem isptItem = qlyIsptItemService.getOne(new LambdaQueryWrapper<QlyIsptItem>() |
| | | .eq(QlyIsptItem::getMatnrCode, params.getMatnrCode()) |
| | | .eq(QlyIsptItem::getIspectId, inspect.getId())); |
| | | if (Objects.isNull(isptItem)) { |
| | | throw new CoolException("质检单明细不存在!!"); |
| | | } |
| | | |
| | | CheckObjDto objDto = new CheckObjDto(); |
| | | objDto.setIsptCode(inspect.getCode()) |
| | | .setAsnCode(inspect.getAsnCode()) |
| | | .setMatnrCode(isptItem.getMatnrCode()) |
| | | .setMaktx(isptItem.getMaktx()) |
| | | .setDisQty(isptItem.getDisQty()) |
| | | .setDlyQty(isptItem.getDlyQty()) |
| | | .setRcptQty(isptItem.getRcptQty()) |
| | | .setIsptResult(isptItem.getIsptResult()) |
| | | .setSplrBatch(isptItem.getSplrBatch()) |
| | | .setSplrName(isptItem.getSplrName()) |
| | | .setPicPath(isptItem.getPicPath()) |
| | | .setMemo(isptItem.getMemo()) |
| | | .setSafeQty(isptItem.getSafeQty()); |
| | | return R.ok(objDto); |
| | | } |
| | | |
| | | /** |
| | | * 快速质检 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R checkUpdate(QlyIsptItem params) { |
| | | if (Objects.isNull(params.getId()) || Objects.isNull(params.getIspectId())) { |
| | | throw new CoolException("参数不能为空!!"); |
| | | } |
| | | IsptItemsParams itemsParams = new IsptItemsParams(); |
| | | List<QlyIsptItem> items = new ArrayList<>(); |
| | | items.add(params); |
| | | itemsParams.setIsptItem(items).setType("0"); |
| | | if (qlyIsptItemService.batchUpdate(itemsParams)) { |
| | | return R.ok(); |
| | | } else { |
| | | return R.error("保存失败!!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取ReceiptDetlsDtos |
| | | */ |
| | | private R getAsnOrderItem(List<AsnOrderItem> items) { |
| | | List<ReceiptDetlsDto> detlsDtos = new ArrayList<>(); |
| | | items.forEach(asnOrderItem -> { |
| | | ReceiptDetlsDto detlsDto = new ReceiptDetlsDto(); |
| | | |
| | | detlsDto.setAsnCode(asnOrderItem.getAsnCode()) |
| | | .setMaktx(asnOrderItem.getMaktx()) |
| | | .setBarcode(asnOrderItem.getTrackCode()) |
| | | .setQty(asnOrderItem.getQty()) |
| | | .setPoCode(asnOrderItem.getPoCode()) |
| | | .setAnfme(asnOrderItem.getAnfme()) |
| | | .setPurQty(asnOrderItem.getPurQty()) |
| | | .setSplrBatch(asnOrderItem.getSplrBatch()); |
| | | |
| | | 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::getAsnId, asnOrderItem.getAsnId())); |
| | | 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()); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | |