| | |
| | | import com.vincent.rsf.server.system.service.impl.FieldsItemServiceImpl; |
| | | import com.vincent.rsf.server.system.service.impl.UserServiceImpl; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | public class PdaCheckOrderServiceImpl implements PdaCheckOrderService { |
| | |
| | | private ReportMsgService reportMsgService; |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @Autowired |
| | | private CheckOrderItemService checkOrderItemService; |
| | | |
| | | @Autowired |
| | | private CheckOrderService checkOrderService; |
| | | |
| | | |
| | | @Override |
| | |
| | | checkDiff.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val).setCheckQty(sum); |
| | | if (!checkDiffService.updateById(checkDiff)) { |
| | | throw new CoolException("更新差异单失败"); |
| | | } |
| | | |
| | | // 按盘点单明细汇总实盘数量并回写 |
| | | Set<Long> taskItemIds = diffItems.stream().map(CheckDiffItem::getTaskItemId).filter(Objects::nonNull).collect(Collectors.toSet()); |
| | | if (!taskItemIds.isEmpty()) { |
| | | List<TaskItem> taskItems = taskItemService.listByIds(taskItemIds); |
| | | Map<Long, BigDecimal> orderItemIdToCheckQty = new HashMap<>(); |
| | | for (CheckDiffItem di : diffItems) { |
| | | if (di.getTaskItemId() == null) { |
| | | continue; |
| | | } |
| | | TaskItem ti = taskItems.stream().filter(t -> t.getId().equals(di.getTaskItemId())).findFirst().orElse(null); |
| | | if (ti == null || ti.getOrderItemId() == null) { |
| | | continue; |
| | | } |
| | | Double cq = di.getCheckQty() != null ? di.getCheckQty() : 0.0; |
| | | orderItemIdToCheckQty.merge(ti.getOrderItemId(), BigDecimal.valueOf(cq), BigDecimal::add); |
| | | } |
| | | for (Map.Entry<Long, BigDecimal> e : orderItemIdToCheckQty.entrySet()) { |
| | | double workQty = e.getValue().setScale(6, RoundingMode.HALF_UP).doubleValue(); |
| | | if (!checkOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>() |
| | | .eq(WkOrderItem::getId, e.getKey()) |
| | | .set(WkOrderItem::getWorkQty, workQty))) { |
| | | throw new CoolException("盘点单明细实盘数量更新失败"); |
| | | } |
| | | } |
| | | if (checkDiff.getOrderId() != null) { |
| | | List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, checkDiff.getOrderId())); |
| | | BigDecimal orderWorkQty = orderItems.stream() |
| | | .map(oi -> oi.getWorkQty() != null ? BigDecimal.valueOf(oi.getWorkQty()) : BigDecimal.ZERO) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | if (!checkOrderService.update(new LambdaUpdateWrapper<WkOrder>() |
| | | .eq(WkOrder::getId, checkDiff.getOrderId()) |
| | | .set(WkOrder::getWorkQty, orderWorkQty.setScale(6, RoundingMode.HALF_UP).doubleValue()))) { |
| | | throw new CoolException("盘点单主表实盘数量更新失败"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); |
| | |
| | | .setMaktx(matnr.getName()) |
| | | .setAnfme(item.getCheckQty()); |
| | | |
| | | FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getValue, item.getFieldsIndex()).last("limit 1")); |
| | | if (Objects.isNull(fieldsItem)) { |
| | | throw new CoolException("当前票号不存在库存中,请拿出后重新入库!!"); |
| | | // 票号暂不使用,不校验票号是否存在 |
| | | FieldsItem fieldsItem = null; |
| | | if (StringUtils.isNotBlank(item.getFieldsIndex())) { |
| | | fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getValue, item.getFieldsIndex()).last("limit 1")); |
| | | // if (Objects.isNull(fieldsItem)) { |
| | | // throw new CoolException("当前票号不存在库存中,请拿出后重新入库!!"); |
| | | // } |
| | | } |
| | | taskItem.setFieldsIndex(fieldsItem.getUuid()); |
| | | if (fieldsItem != null) { |
| | | taskItem.setFieldsIndex(fieldsItem.getUuid()); |
| | | } |
| | | |
| | | taskItems.add(taskItem); |
| | | }); |
| | |
| | | .setPDQty(taskItem.getAnfme()) |
| | | .setEditUser(nickName) |
| | | .setEditDate(taskItem.getUpdateTime()) |
| | | .setGoodsNO(fields.get("crushNo")) |
| | | // .setGoodsNO(fields.get("crushNo")) // 票号暂不使用 |
| | | .setIsBad(0 + "") |
| | | .setMemoDtl(taskItem.getMemo()); |
| | | |